Python中的模块/项目结构

2024-03-29 11:00:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图用Python构建一个简单的项目,但是我似乎无法完全理解它是如何完成的,尽管我反复阅读了文档并阅读了示例代码。在

我对Python不太熟悉,只有一个文件脚本编写的背景。 但是我做了很多节点.js以及具有多个文件夹和包的Java项目。 然而,在Python中,我似乎无法掌握项目结构和工作流机制-init.py、virtualenvs、setuptools等等。这一切对我来说都是非常陌生和不直观的,这损害了我的整体生产力(讽刺的是,Python应该是一种旨在提高生产率的语言,对吧?)在

我的项目具有以下示例结构:

package_test  (package)
    |
    |------- __init__.py
    |------- main.py (entry point)
    |
    |------- /lib (modules)
    |           |
    |           |----- __init__.py
    |           |----- lib.py
    |
    |------- /Tests
    |           |
    |           |----- __init__.py
    |           |----- test.py

在主.py公司名称:

^{pr2}$

在库.py公司名称:

 def libtest():
     print("libtest")

在测试.py公司名称:

^{pr2}$

跑步主.py但运行时有效测试.py它找不到模块。我尝试过一些解决办法,比如搜索路径,把“..”放在lib之前,还有更多-没有一个有效。在

这只是一个例子,但我希望将来用Python开发更复杂的项目,其中包含多个子文件夹(我认为Python有一些很酷的特性和漂亮的库),但是这个问题一直困扰着我。在Java或Node中开发时,我从来没有想过这些问题,更不用说virtualenv之类的东西了

提前谢谢你


Tags: 项目pytest文件夹名称示例packageinit
1条回答
网友
1楼 · 发布于 2024-03-29 11:00:48

你的测试.py需要知道库.py在它上面一层,在lib文件夹中。因此,您只需在运行的导入之前附加lib文件夹的路径库.py进入测试.py. 像是什么

import sys
sys.path.append("..//lib")
import lib

请注意,上面的答案假设您运行的是Windows。更全面的方法是用适当的操作系统路径语法。另外,此代码所做的另一个假设是,您将运行测试.py从它的文件夹,而不是绝对/相对路径。在

^{pr2}$

如果你想测试.py对于路径,您的代码可能如下所示:

import sys
import os.path
# os.path.abspath(__file__) gets the absolute path of the current python scrip
# os.path.dirname gets the absolute path of whatever file you ask it to (minus the filename)
# The line below appends the full path of your lib folder to the current script's path
sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), os.path.pardir, 'lib'))
# This should allow test.py to import libtest regardless of where your run it from. Assuming your provided project structure.
from lib import libtest
libtest()

相关问题 更多 >