繁体   English   中英

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不复制包,它只允许virtualenv中的python访问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,同时继续在正常环境中运行您的常用Python版本

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM