将本地分发包安装到虚拟环境中

8

我有一个pytest测试,我们称之为test.py。我曾经在virtualenv之外运行这个测试;现在我正在尝试在virtualenv沙盒中运行它。

这个项目的结构如下:

~/project/test # where test.py and all virtualenv files live
~/project/mylibrary

test.pymylibrary导入。过去这样做是可行的,因为我已经将代码安装在/usr/lib/python2.7/dist-packages/mylibrary中,而该代码位于~/project/mylibrary中。

我无法使用--system-site-packages标志运行virtualenv。我也不能将~/project/mylibrary中的代码移动到~/project/test文件夹中。如何在我的虚拟环境中访问mylibrary中的代码?


1
你有setup.py文件吗?你可以在virtualenv中直接安装它吗? - jonrsharpe
我的库确实有一个setup.py文件。我该如何在virtualenv中安装它? - mirandak
1
...python setup.py install? - jonrsharpe
2个回答

11

你不需要做任何特别的事情 - 只要你在虚拟环境中工作,python setup.py install 将自动安装包到

$VIRTUAL_ENV/lib/python2.7/site-packages

而不是您的系统范围内

/usr/lib/python2.7/dist-packages

目录。

通常最好使用 pip install mylibrary/,因为这样你可以使用 pip uninstall mylibrary 安装包卸载干净。

如果您正在安装自己开发的代码的工作副本,则可以考虑使用 “可编辑”模式 进行安装,使用 pip install -e mylibrary/,这会创建一个到源目录的链接,这样在编辑代码时安装的模块会随之更新。


当我使用 python setup.py install 时出现了 can't find '__main__' module 错误,但是 pip install /path/to/mypackage/ 却可以正常工作。 - mirandak
可能与这个有关?如果没有看到您的源目录和setup.py,我很难弄清楚发生了什么。 - ali_m

-3
最简单的方法是将包含库的目录添加到您的sys.path中。

这并不一定是最好的选择,因为这可能会影响正在运行的其他程序,特别是与该软件包存在冲突的主机。 - Tyler R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接