感谢您查看此内容,我已经考虑了几个小时无济于事。本质上,我想让我的代码更加模块化和可共享:您可以看到以下文件最初是如何组成一个更大的文件的。它不起作用,我怀疑这是因为我试图在 Python 中做一些我不应该做的事情:
app_config.py
:
app_name = "quick scraper"
mysql_db = ... # intended "global" variable that connects to database
main.py
:
from app_config import * # Getting shared variables
import app_library # See code app_library.py below
...
logger = logging.getLogger(app_name) # logger object to be shared later
...
app_library.dlAndSaveWebpage(url) # Module has key helper functions
...
app_library.py
:
import app_models_orm as app_models
def dlAndSaveWebpage(url)
# download and process url
...
app_models.Webpage.create(url=url, body=body)
app_models_orm.py
:
class MySQLModel(Model):
class Meta:
database = mysql_db
class Webpage(MySQLModel):
id = ...
...
类失败
MySQLModel
,因为文件中不存在app_models_orm.py
变量。mysql_db
我可以做一个import app_config
,但我希望app_models_orm.py
被同一目录中的多个脚本使用。如果我必须将自定义文件导入脚本,那么我必须复制模型文件,这看起来很奇怪和错误。同样,我想
app_library.py
由同一目录中的多个脚本使用。app_library
从调用似乎很有意义main.py
,但如果app_library
需要直接从 引用变量app_config.py
,我还必须复制app_library.py
.main.py
包含一个logger
对象,当所有这些代码放在一个文件中时,所有各种方法都可以访问/使用。函数如何(或应该?)app_library.py
访问记录器类的这个实例?
再一次感谢你的帮助。在这种情况下也可以随意“教我如何捕鱼”:我看到很多关于使用全局导入文件的帖子,但这无助于在不添加自定义导入的情况下共享后两个文件的意图,也没有模型文件的帮助,导入时会遇到错误,因为该类正在寻找一个不在文件中的变量。可能有一个正确的方法来做这一切,我想你们中的许多人都会知道如何做。