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

Can virtualenv include necessary project packages from site-packages

运行 命令行:

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中,但没有被复制。

有什么建议吗?

--system-site-packages 不复制包,它只允许 python 从 virtualenv 访问 C:\Users\XXX\AppData\Local\Programs\Python\Python36\Lib\site-packages\.

中的包

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

一个virtualenv环境就好像你刚刚安装了一个新版本的Python一样。除了 Python 提供的标准包外,它没有其他包。如果你想要其他包,你必须使用 'pip' 安装它们,或者你可以使用你正在使用的本机 Python 版本来安装它们。

所以一般来说,只需pip install <packagename>

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

virtualenv 的一个好处是它是你的。您的用户拥有 100% 的所有权,这与系统拥有的基本 Python 版本不同。要将新软件包安装到基础 Python 版本中,您通常必须具有 root 访问权限(sudo 权限)。使用 virtualenvs,你不需要特殊权限(事实上,如果你在 virtualenv 中使用 sudo,你会搞砸的)来安装你想要的所有包。您所做的一切都在您自己的主目录中。另一件巧妙的事情是,当你完成 virtualenv 后,你只需丢弃包含它的根目录。

如果不是强制使用virtualenv,我建议使用Anaconda。这将极大地帮助您解决问题。

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

如果你需要一个需要不同版本Python的包,你不需要切换到不同的环境管理器,因为conda也是一个环境管理器。

只需几个命令,您就可以为 运行 不同版本的 Python 设置一个完全独立的环境,同时继续 运行 您常用的 [=18] 版本=] 在您的正常环境中