在新鮮的Mac OS X上(嘗試Maverick和Yosemite),我得到pythons pip的奇怪結果。Pip安裝模塊到mac上的不同python安裝
我已在/ usr/local/bin/python中安裝了python的新版本,而原始版本的python仍然位於/ usr/bin/python。我的python安裝被設置爲默認值。
which python
/usr/local/bin/python
當安裝我的python模塊時,pip將所有依賴關係安裝到/usr/local/bin/python
這是正確的。但是,它將/usr/bin/python
的she-bang行添加到控制檯腳本中。
現在,當我使用我的控制檯腳本時,我得到一個導入錯誤,因爲在該版本的python中不存在依賴關係。
我可以通過手工編輯的她邦線
#!/usr/local/bin/python
解決這個問題,一切都很好。
所以,這是我的問題。這是爲什麼發生?爲什麼pip將所有依賴關係安裝到一個版本,並使用不同版本的she-bang?
更重要的問題是,我怎樣才能防止這種情況發生,所以安裝我的模塊的其他人不必自行更改這一行?
這裏是我的setup.py:
import sys
from setuptools import setup, find_packages
import foobar
requires = ['pyyaml==3.11',
'six==1.8.0',
'cement==2.4',
'setuptools>=7.0',
'python-dateutil>=2.2',
]
setup_options = dict(
name='foobar',
version=foobar.__version__,
description='Command Line Interface.',
long_description=open('README.rst').read(),
author='Humdinger',
url='example.com',
packages=find_packages('.', exclude=['tests*', 'docs*']),
package_dir={'foobar': 'foobar'},
install_requires=requires,
classifiers=(
'Development Status :: 5 - Production/Stable',
'Intended Audience :: Developers',
'Intended Audience :: System Administrators',
'Natural Language :: English',
'Programming Language :: Python',
'Programming Language :: Python :: 2.7',
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.3',
'Programming Language :: Python :: 3.4',
),
entry_points={
'console_scripts': [
'foo=foobar.foo:main'
]
}
)
setup(**setup_options)
建議後,我已經加入了線
#!/usr/bin/env python
到我的setup.py和foo.py文件。
這似乎沒有解決問題。
我也試圖重新嘗試新鮮的Mac OSX,而無需安裝我自己的版本的Python。
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ pip --version
pip 1.5.6 from /Library/Python/2.7/site-packages/pip-1.5.6-py2.7.egg (python 2.7)
$ head -1 $(which pip)
#!/usr/bin/python
$ head -1 $(which eb)
#!/usr/bin/python
在使用pip進行安裝之前,您的控制檯腳本的shebang是什麼樣的? – ErlVolton 2014-10-28 19:45:28
控制檯腳本不存在,然後用pip安裝它 – 2014-10-28 19:45:53
我的意思是在你的源代碼中 – ErlVolton 2014-10-28 19:46:06