2017-09-19 26 views
0

我有一个Python脚本,它使用gentle来转录一些音频。Python导入只适用于从包目录内运行

此刻我必须将我的文件复制到温和的回购站,然后我可以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 

是否有使用模块,而无需我的脚本复制到其目录的简单方法?谢谢!

+2

这个问题很难直接回答,因为有几种方法可以解决这个问题。但我的建议是将**包装到你的脚本/项目中,然后将'gentle'声明为它的**依赖**,这样你就可以像使用其他Python包一样安装自己的包。查看https://packaging.python.org - 特别是[Packaging and Distributing Projects](https://packaging.python.org/tutorials/distributing-packages/)章节,了解如何创建自己的Python包。 –

回答

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