避免每次导出PYTHONPATH为\uu init\uuy.py

2024-09-30 07:29:14 发布

您现在位置:Python中文网/ 问答频道 /正文

`-- MyDir
|-- FolderA
|   |-- __init__.py
|   |-- ScriptA.py
`-- FolderB
    |-- __init__.py
    |-- ScriptB.py

以上是我目前结构的一个例子。在FolderA和FolderB中,__init__.py中都有{},X是A或B

我想运行ScriptB.py,它首先导入FolderAfrom FolderA import *。但是,在FolderB下执行python ScriptB.py报告ModuleNotFoundError: No module named 'FolderA'

我目前的解决方法是每次启动conda环境时输入export PYTHONPATH=/path/to/MyDir:$PYTHONPATH。我想问一下这背后的原因,以及如何避免这样做。在

编辑:似乎我应该使用文件夹和脚本来保持简单性。在


Tags: nofrompyimportinit报告结构例子
3条回答

我能找到一些方法来解决这个问题。首先,我会考虑把它们做成一个整体的可能性。但是,如果它们显然不是的话,它们可以很快被抛弃。在

如果它们真的是单独的包,你仍然可以选择。如果一个已经准备好发布了,那么您肯定可以通过pip install使用setup.py脚本和与之相关的所有东西将其安装到Python环境中。有关详细信息,请参见Python packaging tutorial。在

最后,很可能您仍在计划修改内容。在这种情况下,pip可以非常方便地将包作为符号链接安装。这样就可以从您开发的目录中读取包。这是通过从setup.py所在的目录执行pip install -e .来完成的。您可以为“both”包创建一个通用的安装脚本,使用例如^{}。或者您可以稍微修改文件夹结构,使每个包都有不同的设置。现在它们可以作为普通Python包导入。在

使用conda开发

https://conda.io/docs/commands/build/conda-develop.html

这允许您将目录添加到条件pth选择环境的站点包中的文件,它将自动添加到pythonpath中。在

conda develop ~/path/to/work_in_progress/code/ -n environment_name

如果PackageA和{}在同一目录级别,您也可以在该目录中添加u init_uu.py:

App
  __init__.py
  PackageA
   ...
    __init__.py
  PackageB
   ...
    __init__.py

否则,如果这些包是独立开发的,那么您可以将它们作为全局包安装。在

相关问题 更多 >

    热门问题