我想知道virtualenv创建DLLs
文件夹的原因是什么,与创建Lib
和Scripts
文件夹的方式相同?
当我遇到PyDev的以下问题时,问题就出现了;
我将我的一个virtualenvs设置为Python解释器,一切都没问题,只有一个例外。我一直收到来自select
模块的所有导入的未解决导入的警告。这是因为select
模块与大多数其他模块不同,仅存在于DLLs文件夹中。
答案 0 :(得分:8)
我对此主题进行了一些调查。我从 techtonik的语句开始 - 答案很简单 - 没有人实现它。然而,这又引出了另一个问题 - 为什么没有人实现它?我怀疑答案是因为它有效。这导致了另一个问题 - 它为什么有效?
没有将DLLs
文件夹复制到virtualenv中的一切正常的原因是
sys.path
以查找所需的任何dll sys.path
包含原始DLLs
文件夹的路径可以通过从DLLs
删除sys.path
文件夹的路径并尝试导入select
模块(此模块需要来自{{1的select.pyd
文件来简单地测试第一个语句然后失败的文件夹。
在评论中你说我想将Python模块的DLL与Python代码一起保存在虚拟环境中。只需将DLLs
文件夹复制到virtualenv即可。这有效的原因是,在virtualenv激活之后DLLs
还包含了virtualenv中sys.path
文件夹的路径(虽然在创建virtualenv时没有创建这样的文件夹)。此路径位于原始DLLs
文件夹的路径之前,这意味着它首先被搜索,因此会覆盖原始DLLs
文件夹。
我在Python的邮件列表中发布了一个名为DLLs folder on Windows的问题。
答案 1 :(得分:3)