`-- MyDir
|-- FolderA
| |-- __init__.py
| |-- ScriptA.py
`-- FolderB
|-- __init__.py
|-- ScriptB.py
以上是我目前结构的一个例子。在FolderA和FolderB中,__init__.py
中都有{
我想运行ScriptB.py
,它首先导入FolderA
:from FolderA import *
。但是,在FolderB下执行python ScriptB.py
报告ModuleNotFoundError: No module named 'FolderA'
我目前的解决方法是每次启动conda环境时输入export PYTHONPATH=/path/to/MyDir:$PYTHONPATH
。我想问一下这背后的原因,以及如何避免这样做。在
编辑:似乎我应该使用文件夹和脚本来保持简单性。在
我能找到一些方法来解决这个问题。首先,我会考虑把它们做成一个整体的可能性。但是,如果它们显然不是的话,它们可以很快被抛弃。在
如果它们真的是单独的包,你仍然可以选择。如果一个已经准备好发布了,那么您肯定可以通过
pip install
使用setup.py
脚本和与之相关的所有东西将其安装到Python环境中。有关详细信息,请参见Python packaging tutorial。在最后,很可能您仍在计划修改内容。在这种情况下,} 。或者您可以稍微修改文件夹结构,使每个包都有不同的设置。现在它们可以作为普通Python包导入。在
pip
可以非常方便地将包作为符号链接安装。这样就可以从您开发的目录中读取包。这是通过从setup.py
所在的目录执行pip install -e .
来完成的。您可以为“both”包创建一个通用的安装脚本,使用例如^{使用conda开发
https://conda.io/docs/commands/build/conda-develop.html
这允许您将目录添加到条件pth选择环境的站点包中的文件,它将自动添加到pythonpath中。在
如果}在同一目录级别,您也可以在该目录中添加u init_uu.py:
PackageA
和{否则,如果这些包是独立开发的,那么您可以将它们作为全局包安装。在
相关问题 更多 >
编程相关推荐