我在MacOS(10.11)下遇到过这种情况,但在各种Linux下也遇到了同样的问题。我安装了#34;官方" Python3包,它进入/Library/Frameworks/Python.framework/Versions/3.4
。 (注意:下面的示例使用Python 3.4,但问题仍然存在于3.5。由于缺少管理员权限,我无法访问具有Python 3.6的计算机,如果问题已在3.6中解决。)
我需要虚拟环境,我需要python-config
脚本来确定Python3使用哪些库,因为我的项目结合了Python和C ++代码。
如果我使用virtualenv
设置虚拟环境,一切都很好:
$ which virtualenv
/Library/Frameworks/Python.framework/Versions/3.4/bin/virtualenv
$ virtualenv --python=$(which python3) vienv
Running virtualenv with interpreter /Library/Frameworks/Python.framework/Versions/3.4/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
[...blabla...]
Installing setuptools, pip, wheel...done.
$ source vienv/bin/activate
(vienv) $ which python-config
/Users/XXXXX/DEV/STANDALONE/misc/python/vienv/bin/python-config
(vienv) $ python-config --libs
-lpython3.4m -ldl -framework CoreFoundation
但是,pyvenv
忘记在虚拟环境中设置python-config
:
$which pyvenv
/Library/Frameworks/Python.framework/Versions/3.4/bin/pyvenv
$ pyvenv pe
$ source pe/bin/activate
(pe) $ which python-config
/usr/bin/python-config # !!! Here's the problem !!!
(pe) $ python-config --libs
-lpython2.7 -ldl -framework CoreFoundation
换句话说,即使我激活了虚拟环境,系统默认的Python2 python-config
也会保留在PATH
中。
现在你可以说:问题是什么?使用virtualenv
并完成它。但是,virtualenv
需要通过pip
额外安装,这需要管理员权限,而我并不总是这样做。 pyvenv
,OTOH,附带Python3,或者至少是我的理解。
您还可以说:为什么不使用python-config
在虚拟环境中安装pip
?这就是原因:
(pe) $ pip install python-config
Requirement already satisfied (use --upgrade to upgrade): python-config in ./pe/lib/python3.4/site-packages
Cleaning up...
是的,包就在那里,但脚本本身没有安装到虚拟环境的bin
子目录中。
总结:我想配置我的项目,以便只能使用Python3标准模块/工具进行安装,而且它不依赖于virtualenv
之类的额外内容。而且我不想纠缠系统管理员: - )
问题:是否有一种解决方法可以正确安装pyvenv
python-config
?或者:如果我将C ++代码与虚拟环境中的特定Python3安装相关联,还有另一种方法可以确定我应该使用哪些头文件和库?
答案 0 :(得分:0)
嗯,一年之后,现在是时候回答我自己的问题了: - )
以下是python-config
安装到virtualenv
的{{1}}脚本。如果你使用${VENV}/bin
,那么只需手动将其复制到此位置,直到此问题得到解决(据我所知,从{2011年开始bug report仍然没有修复)。
python3 -m venv ${VENV}