为什么setuptools / easy_install .pth文件与PYTHONPATH不能很好地配合,如何让它们很好地播放,并在sys.path中的那些.pth推送之前将目录保存在我的PYTHONPATH中?
我目前的问题是我为我们的项目创建了一个包,其中PyYAML和PyCrypto都是需求。
install_requires=["PyYAML",
"pycrypto >= 2.3"]
正如我们一直在开发的那样,我们已经使用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得到了PyYamp /...../ p>
但是现在,当我尝试在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
但是没有将/ opt / ...添加到easy-install.pth。 (只有/ usr / lib64 ...并且我运行setup.py的目录被添加到路径中。)
最终的结果是,虽然我的setuptools认为它成功,但是当我运行我的代码时,easy-install.pth决定它比我更了解我想要的东西,在我的PYTHONPATH之前插入自己,我最终导入了错误版本的PyCrypto。
两个问题:
为什么setuptools与它添加到.pth文件的目录不一致?我希望安装两个目录或两个目录。
有没有办法让setuptools不要试图覆盖我的PYTHONPATH?为什么这首先被认为是一个好主意?
答案 0 :(得分:0)
根据我对您的问题的理解,这可能是您对此的担忧: https://github.com/pypa/setuptools/issues/397
听起来像其他人有类似的问题。我错了,我只是用pip。如果我能帮忙的话,我从不使用easy_install。