小编Chr*_*oph的帖子

多个 main 的正确 python 导入

我有以下文件结构

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 test.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 sub\n    \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 foo.py\n    \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 bar.py\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用测试.py:

\n\n
# test.py\nfrom sub import foo\nfoo.test()\n
Run Code Online (Sandbox Code Playgroud)\n\n

和 foo.py:

\n\n
# foo.py\nfrom . import bar\n\ndef test():\n  bar.test()\n
Run Code Online (Sandbox Code Playgroud)\n\n

和 bar.py:

\n\n
# bar.py\ndef test():\n  print(\'This is a test\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

从命令行调用 test.py 时效果很好。

\n\n
home/$ python test.py\nThis is a test\n
Run Code Online (Sandbox Code Playgroud)\n\n

现在我希望能够直接从命令行调用 foo.py 。所以我将 foo.py 更改为:

\n\n
# foo.py\nfrom . import bar\n\ndef test():\n  bar.test()\n\nif __name__ == \'__main__\':\n  test()\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是当我调用它时它不起作用

\n\n
/home$ cd sub\n/home/sub$ python bar.py\nTraceback (most recent call last):\n …
Run Code Online (Sandbox Code Playgroud)

python import module

5
推荐指数
1
解决办法
2502
查看次数

标签 统计

import ×1

module ×1

python ×1