推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ve369587
V2EX  ›  Python

python3 import 疑惑

  •  
  •   ve369587 · Feb 8, 2018 · 3904 views
    This topic created in 3041 days ago, the information mentioned may be changed or developed.

    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 为什么不能以项目目录为根节点,根据根节点来查找自定义模块 求大神指教

    7 replies    2018-02-09 16:28:52 +08:00
    slgz
        1
    slgz  
       Feb 8, 2018
    难道不是 __init__.py 文件吗
    scriptB0y
        3
    scriptB0y  
       Feb 8, 2018
    https://www.kawabangga.com/posts/2340

    不过最好的解决办法还是写个 setup.py 打包进去,然后用 python setup.py develop 关联一下。一次打包,到处运行。
    jpyl0423
        4
    jpyl0423  
       Feb 8, 2018
    b 可以解决你的问题, 只要你的目录层级不变, 发给别人也是可以直接用的.
    jpyl0423
        5
    jpyl0423  
       Feb 8, 2018
    @jpyl0423 #3 当然最好还是按照#2 说的, 打个包.
    wisej
        6
    wisej  
       Feb 8, 2018
    为什么要把 main.py 放在 main 文件夹下呢?
    直接把 main.py 放在 project 目录下面不就解决了
    vimiix
        7
    vimiix  
       Feb 9, 2018
    python 是以你执行的文件为根节点的,引用的模块或包不能超过根节点。写 django 的话,应该就了解这点,我们启动 django 都是去执行根目录下的 manage.py 。 所以项目内的文件可以相互引用。

    根节点下面的文件树可以看做是一个项目,他们之间可以通过从根节点路径出发的绝对路径来引用,这也是 Python 推荐的写法。
    理解引用的原理以后,就很简单了

    翻译过一篇关于引用的文章。可以参考一下: http://vimiix.com/post/2017/12/29/import-error-relative-no-parent
    我之前也困扰过一段时间,理解一句话就可以了:“ Python 是根据执行的脚本文件所在的路径为根节点”
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2930 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 12:48 · PVG 20:48 · LAX 05:48 · JFK 08:48
    ♥ Do have faith in what you're doing.