2017-06-20 70 views
1

我有,当我从pycharm运行它,它运行良好,但在命令行中执行时会抱怨无法导入其他文件在同一目录

import util as u 

ModuleNotFoundError: No module named 'util'

我的脚本其次是这里的建议: Script running in PyCharm but not from the command line

解释器是一样的,工作目录是一样的,但sys路径是不同的。

该模块的文件夹看起来像这样

mymodule 
    sub_1 
     util.py 
    sub_2 
     ... 
    main.py 

pycharm显示所有文件夹打印sys.path的元素时。当从命令行运行时,它不会显示其中任何一个,即使当我从thr Director中运行它时,其中main.py是。 即使我从该目录运行文件,是否必须将目录添加到PYTHONPATH?看起来像矫枉过正,每个项目的目录都添加了。有没有更好的方法来做到这一点,或者是标准程序?

+1

尝试在'sub_1' – digitake

+0

使'__init __。py'有了子包,你的目录中就包含了一堆小岛。如果'mymodule'是一个包,那么包含它的目录应该在'sys.path'上,它下面的每个目录都应该有一个'__init __。py',并且你不应该尝试在它内部调用一个脚本。 lounch脚本应该与顶级目录处于同一级别,基本上只需导入入口点并调用它。 – RaminNietzsche

+0

看来你没有一个包相对'进口.util作为u' – mata

回答

0

digitake的使用相对路径的建议的工作

import .util as u 
0

我觉得需要更多的信息来做出的解决方案的建议,但这里是我会检查:

  1. 没有你的模块的封装有__init__.py文件(S)
  2. 使用命令行的时候,你打电话给Python解释器与-I参数?那会从您的脚本中去除位置上下文,因此而不是扫描模块或包的本地目录,所以如果您这样做,请尝试在没有它的情况下运行。
相关问题