win 操作系统
目录结构如下: project |--modu |--init.py |--moduA.py |--main |--main.py
main.py 想引用 moduA,现在网上解决方法: a.Python 安装目录下的\Lib\site-packages 文件夹中建立一个.pth 文件,内容为自己写的库路径 b.动态的添加库路径。在程序运行过程中修改 sys.path 的值,添加自己的库路径
疑惑: a.无论是 a 还是 b 解决的都是自己本机上引包的问题。如果把写的项目发个别人,别人岂不是还要再配置一遍? b.python 为什么不能以项目目录为根节点,根据根节点来查找自定义模块 求大神指教
1
slgz 2018-02-08 15:04:53 +08:00
难道不是 __init__.py 文件吗
|
2
twor 2018-02-08 15:10:56 +08:00
|
3
scriptB0y 2018-02-08 16:36:24 +08:00
https://www.kawabangga.com/posts/2340
不过最好的解决办法还是写个 setup.py 打包进去,然后用 python setup.py develop 关联一下。一次打包,到处运行。 |
4
jpyl0423 2018-02-08 16:46:29 +08:00
b 可以解决你的问题, 只要你的目录层级不变, 发给别人也是可以直接用的.
|
7
vimiix 2018-02-09 16:28:52 +08:00
python 是以你执行的文件为根节点的,引用的模块或包不能超过根节点。写 django 的话,应该就了解这点,我们启动 django 都是去执行根目录下的 manage.py 。 所以项目内的文件可以相互引用。
根节点下面的文件树可以看做是一个项目,他们之间可以通过从根节点路径出发的绝对路径来引用,这也是 Python 推荐的写法。 理解引用的原理以后,就很简单了 翻译过一篇关于引用的文章。可以参考一下: http://vimiix.com/post/2017/12/29/import-error-relative-no-parent 我之前也困扰过一段时间,理解一句话就可以了:“ Python 是根据执行的脚本文件所在的路径为根节点” |