virtualenv可以从站点包中包含必要的项目包吗

时间:2019-03-29 10:12:15

标签: python virtualenv

运行命令行:

virtualenv --system-site-packages venv

我希望venv文件夹venv\Lib\site-packages包含位于以下项目中的所有必需的库: C:\Users\XXX\AppData\Local\Programs\Python\Python36\Lib\site-packages\

并非如此,仅安装了少数几个。

例如,我的程序当前使用

中的pdfminer

C:\Users\XXXX\AppData\Local\Programs\Python\Python36\Lib\site-packages\

我希望将其包含在venv\Lib\site-packages中,但不会被复制。

有什么建议吗?

3 个答案:

答案 0 :(得分:0)

--system-site-packages不会复制软件包,它只是允许virtualenv中的python访问C:\Users\XXX\AppData\Local\Programs\Python\Python36\Lib\site-packages\中的软件包。

无法复制软件包,因为它们可能取决于安装目录。如果要在virtualenv中使用这些软件包,请不要使用--system-site-packages并在virtualenv中安装所有软件包。

答案 1 :(得分:0)

virtualenv环境与您刚刚安装了新版本的Python相同。除了Python随附的标准软件包外,它没有其他软件包。如果需要其他软件包,则必须使用“ pip”安装它们,或者使用正在使用的本机Python版本来安装它们。

因此,一般来说,只需执行pip install <packagename>

如果您发现自己经常想用一组标准的基础软件包来创建virtualenvs,则将一个require.txt文件放在一起,列出要作为基础安装的所有软件包,然后在pip install -r requirements.txt新的virtualenv,就在创建后。

关于virtualenv的一件好事是它全是您的。您的用户拥有它的100%,与系统拥有的基本Python版本不同。要将新软件包安装到基本的Python版本中,通常必须具有root用户访问权限(sudo特权)。使用virtualenvs,您不需要特殊的权限(实际上,如果您在virtualenv中使用sudo,您将被搞砸)来安装所需的所有软件包。您所做的一切都位于您自己的主目录中。另一整洁的事情是,当您使用virtualenv时,只需丢弃包含它的根目录即可。

答案 2 :(得分:0)

如果不是必须使用virtualenv,我建议您选择Anaconda。那将极大地帮助您解决问题。

Conda作为软件包管理器,可以帮助您查找和安装软件包。默认情况下,已经安装了许多软件包,以便为您的项目快速设置。要检查终端中安装的软件包列表,请键入:conda list以获取使用conda安装的软件包。

如果您需要一个需要使用不同版本的Python的软件包,则无需切换到其他环境管理器,因为conda也是环境管理器。

只需几个命令,您就可以设置一个完全独立的环境来运行该不同版本的Python,同时继续在正常环境中运行您通常的Python版本