python - 如何在单独的 setup.py 文件中进行所有导入,然后在 main.py 中导入此文件?
问题描述
我正在尝试制作一个安装脚本,它将在没有它的机器上安装所需的 python 模块。所以采用推荐的安装包方式,这是我的setup.py
import subprocess
import sys
import importlib
required_packages = ["cryptography.fernet", "os", "pip"]
for package in required_packages:
try:
importlib.import_module(package)
print("Imported {} successfully".format(package))
except ImportError:
subprocess.check_call([sys.executable, "-m", "pip", "install", package])
print("Installed {} successfully".format(package))
并main.py
作为:
import setup
os.walk(".") # cause an error
这样我就可以控制哪些模块已安装,哪些未安装,然后安装它们。问题是导入setup.py in main.py
似乎没有在全局命名空间中导入这些包,main.py
所以我怎样才能让这两个 python 文件按预期工作。
解决方案
您的main.py
文件应该像这样导入setup.py
文件:
import setup
__import__('setup', globals={"__name__": __name__})
我会考虑将您的setup.py
文件重命名install_packages.py
为“设置”可能与先前分配的值冲突 - 例如:
import install_packages
__import__('install_packages', globals={"__name__": __name__})
推荐阅读
- angular - Angular JWT:授权标头为空?
- unity3d - Unity IBM Watson Translation,使用具有正确凭据的示例场景不起作用,但也没有显示错误消息
- javascript - 单击“是”按钮后,引导模式窗口未立即关闭
- android - Android ViewPager2如何检索片段onBindViewHolder
- python - python locust中的任务权重和顺序
- sql-server - 在运行时将存储过程输出到临时表
- python-3.x - nx1 矩阵的多元回归中的 OLS
- java - 如何读取/写入嵌入在 jar 中的文件
- visual-studio-code - 如何在 VS Code 中不显示编辑器组的侧边按钮
- javascript - Javascript函数返回以前的值或未定义