无法导入在pycharm中创建的包

Serob_b

我在pycharm(Windows)中创建了2个python包(init.py-s为空),

在此处输入图片说明

并将文件从第二个程序包导入到第一个程序包(one.p y):

from bgr import two

仅此而已,没有循环进口。当我从命令行运行文件时:

python one.py

我收到一个错误:

ModuleNotFoundError: No module named 'bgr'

有趣的是,当我从pycharm UI运行时,它可以正常工作。是什么会导致这种奇怪的行为。

吉布2011

如果您的工作目录在内部asd,则需要一个名为bgr inside 的模块asd在pycharm中,您的工作目录位于test_me外部asd,这就是它起作用的原因。

只需转到test_me目录并键入:

python asd/one.py

它应该工作

另一种选择是添加bgrPYTHONPATH环境变量。然后bgr可以从任何地方导入。


编辑:

您也可以使用相对导入

from ..bgr import two

然而,这才能运行要求,你是里面asd(它不会工作test_me)。从运行脚本的位置而不是从导入脚本的位置搜索模块。

有一种变通办法可以使其在两个位置均适用:

try:
    from bgr import two
except ModuleNotFoundError:
    from ..bgr import two

不过,这仅适用于这两个位置(内部test_me和内部test_me/asd)。在其他任何地方都无法使用。

有两种解决方法可以使其在任何位置都可以使用,例如在stript内部更改cwd(例如,使用os.chdir())或通过PYTHONPATH在脚本内部更改while(例如,sys.path.append()),但不建议这样做,因为它们仅适用于仅在您不更改计算机位置的情况下。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章