我有这样的项目结构:
package1/__init__.py
package1/file1.py
package1/file2.py
package2/__init__.py
package2/file1.py
package2/file2.py
__init__.py
script1.py
script2.py
Run Code Online (Sandbox Code Playgroud)
不幸的是,我发现我只能从根目录运行代码,例如,从script1.py. 如果我运行 from pakage2/file2.py,文件之间的所有链接都会丢失,即找不到package1from的所有导入。package2
Python 中正确的目录结构是什么,它限制了所有目录的包结构?
您要么需要将package1和package2放在一个包中,在这种情况下,它们都可以互相导入:
root_package/
__init__.py
package1/
package2/
Run Code Online (Sandbox Code Playgroud)
或者将包添加到您的PYTHONPATH,在这种情况下,系统上的任何 python 脚本都可以从它们导入:
export PYTHONPATH="$PYTHONPATH:/path/to/package1:/path/to/package2"
Run Code Online (Sandbox Code Playgroud)
更新:如果直接运行脚本,则无法作为包的一部分导入。您应该做的是根据需要在包中定义类和函数,然后从另一个脚本导入它们:
root_package/
__init__.py
my_script.py
package1/
package2/
Run Code Online (Sandbox Code Playgroud)
script.py:
from package1 import ...
from package2 import ...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3779 次 |
| 最近记录: |