【问题标题】:Python import only works when run from inside package directoryPython 导入仅在从包目录内部运行时才有效
【发布时间】:2018-02-28 12:29:03
【问题描述】:

我有一个 python 脚本,它使用gentle 来转录一些音频。

目前我必须将我的文件复制到温柔的仓库中,然后我可以import gentle 并在以后的代码中根据需要使用gentle

但是,我不希望将我的文件复制到温和目录中。我尝试将导入更改为import gentle.gentle,但无论哪种方式,从父目录运行我的脚本时都会出现以下错误:

Traceback (most recent call last):
  File "process_text.py", line 6, in <module>
    import gentle.gentle  # or just import gentle
  File "/usr/local/lib/python2.7/dist-packages/gentle/__init__.py", line 2, in <module>
    from resources import Resources
  File "/usr/local/lib/python2.7/dist-packages/gentle/resources.py", line 4, in <module>
    from util.paths import get_resource, ENV_VAR
ImportError: No module named util.paths

有没有一种简单的方法来使用该模块而无需将我的脚本复制到其目录中?谢谢!

【问题讨论】:

  • 这个问题很难直接回答,因为有几种方法可以解决这个问题。但我的建议是正确打包您的脚本/项目,然后将gentle 声明为它的依赖项,这样您就可以像安装自己的包一样安装其他 Python 包。查看packaging.python.org - 特别是Packaging and Distributing Projects 部分,了解有关如何创建自己的 Python 包的详细信息。

标签: python import module python-import


【解决方案1】:

这个问题有很多修复,请参阅文档上的教程页面以获取更多信息https://docs.python.org/3/tutorial/modules.html

基本上,如果gentle 是 pip 可安装的,您可能想尝试使用以下方法安装它:

pip install --user gentle

或者您可能想要使用condavirtualenv 创建一个环境。 或者,您可以设置您的 PYTHONPATH 环境变量以包含您需要的路径,例如

PYTHONPATH="/path/to/lib:$PYTHONPATH" python /path/to/script.py

【讨论】:

    猜你喜欢
    • 2012-10-16
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2016-12-27
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多