【发布时间】:2021-03-18 07:56:55
【问题描述】:
我正在尝试运行一个基本的setup.py 脚本,它将在另一个更复杂的脚本开始时为我导入模块。
例如,setup.py 脚本如下所示:
import requests
import pandas as pd
modules_imported = True
然后我的主脚本开始如下:
import os
setup_path = ("/home/solebay/My\\ Project\\ Name/setup.py")
if 'modules_imported' not in globals():
os.system('python3 ' + setup_path)
print("modules imported!")
但是,模块未导入并重复运行会导致“模块已导入!”要打印的消息(显然证明该陈述是不真实的)。
脚本没有真正运行还是模块没有被永久安装?
将print("Success!") 添加到startup.py 表明主脚本不会返回打印命令的内容。如果有的话,脚本在什么意义上被执行?
疑难解答 响应BartoszKP 的建议,并在Maurice Meyer 我提出的Maurice Meyer 的进一步帮助下,我尝试了以下操作: p>
import importlib
if 'modules_imported' not in globals():
start_up_script = importlib.util.spec_from_file_location(
name="mod_name",
location="/home/solebay/My Project Name/setup.py"
)
my_mod = importlib.util.module_from_spec(start_up_script)
start_up_script.loader.exec_module(my_mod)
尽管 type(start_up_script) 包含看起来正确的内容:_frozen_importlib.ModuleSpec,但根据我的 startup.py 脚本,modules_imported 永远不会设置为 True。
此外,以下测试失败:
test_data = {'C1': ['AA', 'AB'], 'C2': ['BA', 'BB']}
test_df = pd.DataFrame (data, columns = ['C1','C2'])
NameError: name 'pd' is not defined
#Clearly the modules aren't loading into my env.
【问题讨论】:
标签: python python-import python-module python-importlib