【问题标题】:Importing Modules (SQLITE3) from Python Virtual Environment从 Python 虚拟环境导入模块 (SQLITE3)
【发布时间】:2010-07-28 01:43:57
【问题描述】:

我正在使用安装了 python、django 和 pinax 的 Windows 机器。

我可以从任何正常位置导入模块(即使它不在实际安装的目录中)。但是,当我在为 Pinax 构建的虚拟环境中时,我无法导入这些相同的模块。

这可能是什么原因?有哪些可能的解决方案?

【问题讨论】:

    标签: python django pinax


    【解决方案1】:

    要诊断导入失败,请尝试使用 -v 切换到 python:

    python -v my_program.py
    

    它将显示它尝试导入您的模块。

    【讨论】:

      【解决方案2】:

      正如the summary 所说,

      [[virtualenv]] 创建环境 有自己的安装 目录,不共享 与其他 virtualenv 的库 环境(并且可选地不 使用全局安装的库 要么)。

      然而,您似乎对您构建的 virtualenv“不共享库”感到惊讶......当不共享是 virtualenv 的全部意义时,为什么您会感到惊讶?!- )

      一旦您创建了python virtualenv.py ENV,为了继续引用我已经指出您的摘要,“如果您使用 ENV/bin/easy_install,软件包将被安装到环境中”。

      所以,这样做是为了安装您需要在虚拟环境中导入的所有包。

      (假设您已使用 --no-site-packages 选项来创建虚拟环境,您还需要对“站点范围”安装的所有软件包都这样做,因为该选项的目的是为了更好地排除它们控制和隔离)。

      【讨论】:

      • 谢谢!我假设 virtualenv 只是通过在 virtualenv 中搜索模块开始的,如果没有找到它,它将转到全局站点包位置。我没有使用 no-site-packages 所以我不确定为什么它没有在全局 sitepackages 文件夹中查找我的包。无论如何,我按照您在虚拟环境中的说明安装了 PIL,它工作正常。再次感谢
      • @DevX,不客气。不确定是什么让“无站点包”成为您的默认设置(应该是,但不是;-),也许您遵循了说明或为 Pinax 使用了 virtualenv 构建脚本,这些说明或该脚本包含该标志。无论如何,很高兴我能帮上忙!
      • 只是对最佳实践感到好奇,您通常会在您从事的每个项目的虚拟环境中安装所有模块吗?
      • @DevX,仅用于个人项目(在工作中,我们使用不同的系统来定义项目,尽管它还需要明确说明项目中的每个非标准库包是用户,并且不会实际上让你以其他方式构建)——这是一个适当的“发布工程”纪律问题(没有一个项目在一台机器上成功并在另一台机器上崩溃,因为一个扩展意外地出现在第一个全局并且在第二个丢失——这就是只是开始!-)。
      猜你喜欢
      • 2020-06-21
      • 2015-04-07
      • 2023-01-14
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      相关资源
      最近更新 更多