【问题标题】:Cannot import dynamically installed python module无法导入动态安装的python模块
【发布时间】:2015-09-09 11:46:38
【问题描述】:

我在脚本运行时通过直接导入 pip 模块并安装 requirements.txt 来动态安装代码:

import pip
import site
import sys

# since I'm installing with --user, packages should be installed here,
# so make sure it's on the path
sys.path.insert(0, site.USER_SITE)

pip.main(["install", "--user", "package1"])
import package1

包安装没有错误,但import package1 失败。如果我退出脚本并再次运行它而不进行安装(因为它已经安装),它工作得很好。

我还仔细检查了 site.USER_SITE 是 package1 的安装位置。一切都在 sys.path 上,但我仍然无法导入它。

【问题讨论】:

    标签: python installation pip


    【解决方案1】:

    嗯,这是一个快速的转变。几天来我一直在尝试解决这个问题,最后在这里询问几分钟后得出了我的答案。

    如果将一个尚不存在的路径添加到sys.path,则在导入模块时似乎不会再次检查它,即使它在以后存在(或至少在 python 2.7 中) .

    在我的测试中,当我将 site.USER_SITE 添加到 sys.path 时,它并不存在。如果我首先确保该目录存在,那么一切都会按照您的想法进行:

    import os
    import pip
    import site
    import sys
    
    # this makes it work
    if not os.path.exists(site.USER_SITE):
        os.makedirs(site.USER_SITE)
    
    # since I'm installing with --user, packages should be installed here,
    # so make sure it's on the path
    sys.path.insert(0, site.USER_SITE)
    
    pip.main(["install", "--user", "package1"])
    import package1
    

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-01
      • 2020-07-05
      相关资源
      最近更新 更多