[英]Pip installing module to different python installations on mac
在新的Mac OS X(同时尝试了Maverick和Yosemite)上,我从python pip获得了奇怪的结果。
我在/ 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中不存在依赖项。
我可以通过编辑she-bang线手动解决此问题
#!/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行上执行/usr/bin/python
,因此这就是setuptools用/usr/bin/python
替换您的shebang的原因。 您需要使用新的python安装pip,每个python版本都需要自己的pip。
/usr/local/bin/python get-pip.py
但是,您实际上应该使用virtualenv代替。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.