如果我創建一個虛擬包 - 這裏的/tmp/example_package/setup.py(注意要求):爲什麼PIP忽略衝突的依賴關係?
from distutils.core import setup
setup(name='my_project',
description="Just a test project",
version="1.0",
py_modules=['sample'],
install_requires=['requests > 0.12'])
這裏的/tmp/example_package/sample.py:
import requests
def get_example():
return requests.get("http://www.example.com")
現在,我創建的virtualenv:
$ virtualenv /tmp/foobar --distribute -p python2.7
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /tmp/foobar/bin/python2.7
Also creating executable in /tmp/foobar/bin/python
Installing distribute.................................................................................................................................................................................................done.
Installing pip................done.
$ source /tmp/foobar/bin/activate
我創建了一個requirements.pip 相互矛盾的要求:
# this requires requests > 0.12:
file:///tmp/example_package
# but this conflicts:
requests==0.9.0
匹普高興地安裝此:
$ pip install -r requirements.pip [18:40:10]
Unpacking ./example_package
Running setup.py egg_info for package from file:///tmp/example_package
Downloading/unpacking requests==0.9.0 (from -r requirements.pip (line 3))
Downloading requests-0.9.0.tar.gz (55Kb): 55Kb downloaded
Running setup.py egg_info for package requests
Downloading/unpacking certifi>=0.0.4 (from requests==0.9.0->-r requirements.pip (line 3))
Downloading certifi-0.0.8.tar.gz (118Kb): 118Kb downloaded
Running setup.py egg_info for package certifi
Installing collected packages: requests, my-project, certifi
Running setup.py install for requests
Running setup.py install for my-project
Running setup.py install for certifi
Successfully installed requests my-project certifi
Cleaning up...
爲什麼皮普允許這樣做?我的example_package
將無法正常工作,因爲它的要求沒有得到滿足。
我相信我的setup.py是正確的 - 如果我不使用'install_requires',[pip在其他情況下忽略我的依賴項](http://stackoverflow.com/questions/12372336/how-do -i-make-pip-respect-requirements) –
嗯,雖然https://bitbucket.org/carljm/python-distutils/src/48c42eeaee4410d76675b637bcd401b8919ff19a/core.py?at=default#cl有一些關於'install_requires'的腥意-44和http://svn.python.org/view/sandbox/trunk/setuptools/setuptools/dist.py?view=log(170行) – Anentropic
我認爲你是對的,'install_requires'應該沒問題,因爲Pip使用setuptools來安裝http://stackoverflow.com/a/370062/202168 ...另外,我幾乎不會第一個注意到,但是當你在引擎蓋下看時,神聖的莫爾Python包裝是一個可怕的混亂! – Anentropic