2014-01-30 188 views
0

這種情況是我想使用virtualenv自動執行我的部署過程。我在一個git倉庫中有一個python項目。我使用jenkins來自動化所有的東西。裏面一個詹金斯建設,我做到以下幾點:virtualenv pip安裝mysql-python失敗

  • 連接到遠程測試服務器
  • 創建一個空的virtualenv
  • 下載我的項目(GIT克隆)
  • 安裝依賴 - 進入virtualenv中

最後一步失敗。那裏有python 2.6.6。我運行. bin/activate來輸入virtualenv並運行pip install mysql-python來安裝我的依賴項。以下是我得到的控制檯輸出:

Downloading/unpacking mysql-python 
    Running setup.py (path:/var/www/_dev/ola_internal/build/mysql-python/setup.py) egg_info for package mysql-python 
Installing collected packages: mysql-python 
    Running setup.py install for mysql-python 
    building '_mysql' extension 
    gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/python2.6 -c _mysql.c -o build/temp.linux-x86_64-2.6/_mysql.o -g -fPIC -g -static-libgcc 
-fno-omit-frame-pointer -DPERCONA_INNODB_VERSION=rel31.1 -fPIC -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing -DMY_PTHREAD_FASTMUTEX=1 
    _mysql.c:29:20: error: Python.h: No such file or directory 
    _mysql.c:40:26: error: structmember.h: No such file or directory 
    _mysql.c:74: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 
    _mysql.c:75: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 
    _mysql.c:76: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 
    _mysql.c:77: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token 

這裏有很多C錯誤我會省略。

[...] 

和最終就是這樣:

_mysql.c: In function 'DL_EXPORT': 

_mysql.c:3058: error: expected declaration specifiers before 'init_mysql' 

_mysql.c:3166: error: expected '{' at end of input 

error: command 'gcc' failed with exit status 1 

---------------------------------------- 
Cleaning up... 
Command /var/www/_dev/ola_internal/bin/python -c "import setuptools, tokenize;__file__='/var/www/_dev/ola_internal/build/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-z0QiG8-record/install-record.txt --single-version-externally-managed --compile --install-headers /var/www/_dev/ola_internal/include/site/python2.6 failed with error code 1 in /var/www/_dev/ola_internal/build/mysql-python 
Storing debug log for failure in /var/lib/jenkins/.pip/pip.log 

這是怎麼回事?這是很奇怪的,因爲在服務器上安裝了全球MySQLdb的:

[email protected]:/var/www/_dev/ola_internal$ python 
Python 2.6.6 (r266:84292, Dec 26 2010, 22:31:48) 
[GCC 4.4.5] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import MySQLdb 
>>> MySQLdb.__version__ 
'1.2.2' 

回答

2

感謝this blog,它發生,我沒有安裝python-dev Debian軟件包:

sudo apt-get install python-dev