ImportError and ModuleNotFoundError: how to get a script running from the command line?
ImportError and ModuleNotFoundError: how to get a script running from the command line?
我有一个结构如下的项目:
HorticulturalSalesPrediction/
Docker
HorticulturalSalesPrediction_API/
optimization/
__init__.py
optuna_optim.py
preprocess/
__init__.py
base_dataset.py
utils/
__init__.py
FeatureAdder.py
helper_functions.py
__init__.py
optim_pipeline.py
run.py
在脚本中 run.py
我导入这样的东西:
import optim_pipeline
from utils import helper_functions
在脚本中 optim_pipeline.py
我导入这样的东西:
from utils import helper_functions
from preprocess import base_dataset
from optimization import optuna_optim
我用 IDE PyCharm 开发了这个框架,当我用 'Run'-Button 运行 时,框架工作正常。但是当我想 运行 通过带有 python3 run.py
或 python3 -m run.py
的终端时,我收到以下错误:
Traceback (most recent call last):
File "run.py", line 3, in <module>
import optim_pipeline
File "/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API/optim_pipeline.py", line 4, in <module>
from preprocess import base_dataset
File "/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API/preprocess/base_dataset.py", line 8, in <module>
from HorticulturalSalesPrediction_API.utils import FeatureAdder
ModuleNotFoundError: No module named 'HorticulturalSalesPrediction_API'
我知道整个 python 导入主题(, Call a function from another file?, Relative imports for the billionth time,...)已经有大量问题和解决方案,但其中 none 对我有用。
当我打印 sys.path
时,我和其他人一起收到 '/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API'
,所以所有这些东西都应该在 syspath 中可用。
我也试过做相对导入和绝对导入。但是通过这些尝试,我发现了 ValueError: attempted relative import beyond top-level package
或 ImportError: attempted relative import with no known parent package
错误(例如,当我尝试 from . import optim_pipeline
时)。
尝试重新安装模块并更新 python。
更新HorticulturalSalesPrediction_API
所以我发现了我的错误。
解决方法是在HorticulturalSalesPrediction 文件夹中运行 python3 -m HorticulturalSalesPrediction_API.run
。
然后,在研究了链接问题 python 中的导入在理论上是如何工作之后,它会像预期的那样工作,或者像我预期的那样工作...
我刚刚不得不调整一些导入:
from HorticulturalSalesPrediction_API.utils import helper_functions
from . import optim_pipeline
和
from HorticulturalSalesPrediction_API.utils import helper_functions
from HorticulturalSalesPrediction_API.preprocess import base_dataset
from HorticulturalSalesPrediction_API.optimization import optuna_optim
我有一个结构如下的项目:
HorticulturalSalesPrediction/
Docker
HorticulturalSalesPrediction_API/
optimization/
__init__.py
optuna_optim.py
preprocess/
__init__.py
base_dataset.py
utils/
__init__.py
FeatureAdder.py
helper_functions.py
__init__.py
optim_pipeline.py
run.py
在脚本中 run.py
我导入这样的东西:
import optim_pipeline
from utils import helper_functions
在脚本中 optim_pipeline.py
我导入这样的东西:
from utils import helper_functions
from preprocess import base_dataset
from optimization import optuna_optim
我用 IDE PyCharm 开发了这个框架,当我用 'Run'-Button 运行 时,框架工作正常。但是当我想 运行 通过带有 python3 run.py
或 python3 -m run.py
的终端时,我收到以下错误:
Traceback (most recent call last):
File "run.py", line 3, in <module>
import optim_pipeline
File "/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API/optim_pipeline.py", line 4, in <module>
from preprocess import base_dataset
File "/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API/preprocess/base_dataset.py", line 8, in <module>
from HorticulturalSalesPrediction_API.utils import FeatureAdder
ModuleNotFoundError: No module named 'HorticulturalSalesPrediction_API'
我知道整个 python 导入主题(
当我打印 sys.path
时,我和其他人一起收到 '/home/josef/Schreibtisch/HorticulturalSalesPrediction/HorticulturalSalesPrediction/HorticulturalSalesPrediction_API'
,所以所有这些东西都应该在 syspath 中可用。
我也试过做相对导入和绝对导入。但是通过这些尝试,我发现了 ValueError: attempted relative import beyond top-level package
或 ImportError: attempted relative import with no known parent package
错误(例如,当我尝试 from . import optim_pipeline
时)。
尝试重新安装模块并更新 python。
更新HorticulturalSalesPrediction_API
所以我发现了我的错误。
解决方法是在HorticulturalSalesPrediction 文件夹中运行 python3 -m HorticulturalSalesPrediction_API.run
。
然后,在研究了链接问题 python 中的导入在理论上是如何工作之后,它会像预期的那样工作,或者像我预期的那样工作...
我刚刚不得不调整一些导入:
from HorticulturalSalesPrediction_API.utils import helper_functions
from . import optim_pipeline
和
from HorticulturalSalesPrediction_API.utils import helper_functions
from HorticulturalSalesPrediction_API.preprocess import base_dataset
from HorticulturalSalesPrediction_API.optimization import optuna_optim