python - 尝试在没有说明的情况下从 repo 运行 python 代码
问题描述
我试图从这个 repo运行代码但没有成功。没有关于如何运行它的说明。我怀疑我应该运行FactcheckingRANLP/Factchecking_clean/classification/lstm_train.py
然后运行.../lstm_test.py
。
问题是这段代码使用import
语句作为模块,引用不同目录中的文件夹和文件,例如lstm_train.py
:
File "lstm_train.py", line 3, in <module>
from classification.lstm_utils import *
ModuleNotFoundError: No module named 'classification'
这是分类文件夹的树形结构:
.
├── classification
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── lstm_repres.py
│ ├── lstm_test.py
│ ├── lstm_train.py
│ ├── lstm_train.pyc
│ ├── lstm_utils.py
│ ├── lstm_utils.pyc
│ ├── __pycache__
│ │ ├── __init__.cpython-36.pyc
│ │ ├── lstm_train.cpython-36.pyc
│ │ └── lstm_utils.cpython-36.pyc
│ └── svm_run.py
我想知道如何让 python 运行 lsmt_train/test.py 文件,以便正确编译其中包含的导入语句。我不想修改代码,因为这可能会产生很多错误..
解决方案
您可以将指向分类文件夹的路径添加到您的 python 路径变量中。
我建议使用 sys 包:
import sys
sys.path.append('<<<PathToRepo>>>/FactcheckingRANLP/Factchecking_clean')
将 repo 分类目录添加到您的 python 路径后,导入语句应该可以工作。
编辑:更正;在最初的帖子中,我建议将 .../classification 的路径添加到您的路径变量中,而不是父文件夹 .../Factchecking_clean 是必需的,因为文件导入了模块“分类”。
此外,在 Lucas Azevedo 的回答中,父目录路径被添加到存储库 lstm_train 文件本身中。虽然这绝对有效,但我仍然认为不编辑原始存储库应该是可能的。
我查看了有问题的 repo,像 lstm_train.py 这样的文件是脚本,应该在 python 工作目录设置为'<<<PathToRepo>>>/FactcheckingRANLP/Factchecking_clean'
.
有几种方法可以做到这一点:
- 您可以在 python IDE 中打开项目并将执行配置为使用该目录
.../Factchecking_clean
作为工作目录。例如,在 pycharm 中,这可以通过将 repo 目录.../Factchecking_clean
作为项目导入来完成。下图展示了如何在 pycharm 中设置执行的工作目录:
我认为存储库是使用此执行配置设置开发的。
- 另一种可能性是从另一个 python 文件中执行 python 脚本。这对我来说似乎相当不方便,不管你可以通过创建一个单独的 python 文件来做到这一点:
import sys
import os
sys.path.append('<<<PathToRepo>>>/FactcheckingRANLP/Factchecking_clean')
os.chdir('<<<PathToRepo>>>/FactcheckingRANLP/Factchecking_clean')
exec(open('./classification/lstm_train.py').read())
这会将Factchecking_clean
目录添加到 python 路径(使用sys.path.append()
),以便能够导入classification.utils
. 工作目录由设置os.chdir()
并最终exec(open('<<<filepath>>>')).read()
执行具有正确工作目录和路径变量设置的 lstm_train 文件。
使用上面的代码执行新的 python 文件对我有用(无需编辑原始存储库)。
但是,由于像 lstm_train.py 这样的脚本实际上用于执行其余存储库模块中提供的代码的特定部分,我认为出于实验目的编辑这些文件是可以的。一般来说,在使用这样的存储库时,我建议使用具有正确设置配置的 IDE(如 pycharm)(方法 1)。
推荐阅读
- excel - Excel。日期和时间的自动单元格格式,用于更快和简化的写入过程
- postgresql - 如何在创建时在 postgres docker 映像中加载数据
- python - Pytorch 张量形状
- typescript - 类型化对象数组不可分配给类型“任何 []”
- graphql - 如何使用graphql Altair和strapi上传带有文件的元数据
- ruby-on-rails - 如何在辅助规范中使用控制器方法?
- redis - Redis 中的流水线 MULTI/EXEC
- javascript - 在javascript中处理数据
- python - 我无法在我的球员中心位置画一个圆圈
- python - 如何使用 Kivy 在 TabedPannel 的顶部“锚定”一个 BoxLayout?