1
matrix67 2020-09-28 09:32:05 +08:00
pycharm 里面直接打函数,下面会有一条红色的线,alter+ enter
|
2
ruanimal 2020-09-28 09:32:57 +08:00
|
3
CenN OP @matrix67 Pycharm 写的是`from preprocessing.utils import xxx`,在 Pycharm 中是可以用的,但是我这个最终是放到服务器上的,在服务器上就提示错误。
``` Traceback (most recent call last): File "createData.py", line 4, in <module> from preprocessing.utils import process ModuleNotFoundError: No module named 'preprocessing' ``` |
5
ruanimal 2020-09-28 09:40:15 +08:00
|
6
ruanimal 2020-09-28 09:46:57 +08:00 1
@CenN 有几个点你得确认, 看文档很重要大哥
1. 程序的执行入口: 应该是 train.py 2. 程序的工作目录: 应该是项目根目录, 也就是 python train.py 3. import 的方式: from .utils import xxx 或者 from preprocessing.utils import xxx 4. __init__.py |
9
ruanimal 2020-09-28 09:50:05 +08:00
可以看看这两篇
http://ponder.work/2016/04/25/Python%E5%8C%85%E5%AF%BC%E5%85%A5/ http://ponder.work/2016/06/22/python%E5%8C%85%E5%AF%BC%E5%85%A5%E5%86%8D%E8%B0%88/ |
10
BBCCBB 2020-09-28 09:57:48 +08:00 1
好像是推荐用 from .utils import xxx 这种方式.
from utils import xxx 这种, 如果全局有 utils 模块, 就会有冲突, 导致错误. 你看看 python 的相对导入. |
11
zone10 2020-09-28 09:58:44 +08:00
假设你的包结构是这样的:
```bash /preprocessing __init__.py createData.py utils.py ``` 如果你在 `preprocessing` 目录内运行 `createData.py`, 那么不管是 `from preprossing.utils import xxx` 还是 `from .utils import xxx` 都是不能运行的, 只能在 `preprocessing` 目录外运行 `python preprocessing/createData.py`, 或者改成 `from utils import xxx` |
13
CenN OP createData 是处理数据,train 是训练模型的。
我想在 Pycharm 上用小数据量调试看看程序有没有错,然后放到服务器上执行。 所以想要在两个地方都能运行。 用 from utils import xxx 导入 在 Pycharm 上将 preprocessing 设为 source root 这样两个地方都能运行了 |
16
no1xsyzy 2020-09-28 10:37:50 +08:00
你是 cd 进 preprocessing 直接运行 python createData.py 了吧……
不然库发现不可能发现 utils |
18
BBCCBB 2020-09-28 10:46:23 +08:00
有个 python -m 的命令. 看看能解决不.
|
19
dobest 2020-09-28 10:49:48 +08:00
还是一个 relative import 的问题,__name__ == '__main__' 时,是没有包信息的,所以用 .mypackage import XX 会出错,可以在目录外执行 python -m mytrain.createData 或加入路径信息 。
可以参考 SO 的这个问题 https://stackoverflow.com/questions/16981921/relative-imports-in-python-3 |
20
laike9m 2020-09-28 10:55:36 +08:00
取决于你是怎么调用和运行的
|
22
XDy0 2020-09-28 14:39:58 +08:00
我前段时间刚开始用 python 也遇到了这个问题,后来在项目结构上面做了点手脚,自己起个文件夹叫 lib,包都装进去,引入的时候就是 from lib.xxxxxx 。但是还是不能很好地解决那种 lib 里面的模块需要调用环境的模块的
|
23
imn1 2020-09-28 15:39:49 +08:00
|
24
cgwh 2020-09-28 20:31:46 +08:00 via Android
import .xxxxx
就行了啊! |