AFo*_*lia 8 python setuptools pythonpath
为什么setuptools/easy_install .pth文件不适合PYTHONPATH,如何让它们很好地播放,并在sys.path中的那些.pth推送之前将目录保存在我的PYTHONPATH中?
我目前的问题是我为我们的项目创建了一个包,PyYAML和PyCrypto都是需求.
install_requires=["PyYAML",
"pycrypto >= 2.3"]
Run Code Online (Sandbox Code Playgroud)
正如我们一直在开发的那样,我们已经使用pip在标准目录(/usr/lib64/python2.6/site-packages)中安装了PyYaml.我们在那里安装了旧版本的PyCrypto,然后发现我们需要更新的版本,我们在/opt/devtools/lib64/python2.6/site-packages下安装了它.在/ usr/lib64之前,我们已经将我们的PYTHONPATH设置为首先从/ opt读取.这一切在开发中都很好.当我们运行时,我们从/ opt获得PyCrypto 2.3,从/ usr/lib64 /获得PyYaml ....
但现在,当我尝试在virtualenv中安装时,当我运行时python setup.py develop,setuptools/distribute最终将/usr/lib64/python2.6/site-packages添加到easy-install.pth,但不是/ opt/devtools /lib64/python2.6/site-packages.它正在找到正确的版本,如输出中所示:
Using /home/s3447/projects/wsrs.git/emp_parsing
Searching for pycrypto==2.3
Best match: pycrypto 2.3
Adding pycrypto 2.3 to easy-install.pth file
Using /opt/wsrs-devtools/stow/pycrypto-2.3/lib64/python2.6/site-packages
Searching for PyYAML==3.10
Best match: PyYAML 3.10
Adding PyYAML 3.10 to easy-install.pth file
Run Code Online (Sandbox Code Playgroud)
但是不要在easy-install.pth中添加/ opt/.... (只有/ usr/lib64 ...并且我运行setup.py的目录被添加到路径中.)
最终的结果是,虽然我的setuptools认为它是成功的,但是当我运行我的代码时,easy-install.pth决定它比我更了解我想要的东西,在我的PYTHONPATH之前插入自己,我最终导入了错误的版本PyCrypto.
两个问题:
为什么setuptools与它添加到.pth文件的目录不一致?我希望安装两个目录或两个目录.
有没有办法让setuptools不试图覆盖我的PYTHONPATH?为什么这首先被认为是一个好主意?
根据我对您问题的理解,这可能是您对此问题的担忧: https: //github.com/pypa/setuptools/issues/397
听起来其他人也遇到过类似的问题。我可能是错的,我只是使用pip。如果可以的话我从不使用easy_install。