【问题标题】:Trying to import modules using another script尝试使用另一个脚本导入模块
【发布时间】: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


    【解决方案1】:

    当您运行 os.systempython3 时,您只是在启动一个新的、完全独立的 Python 解释器,它有自己的宇宙。这不会影响您当前的执行环境。

    看来你想要的更像是这样的:

    spec = importlib.util.spec_from_file_location('setup', '/home/solebay/My\\ Project\\ Name/')
    module = importlib.util.module_from_spec(spec)
    

    importlib 模块的文档中有更多详细信息。

    【讨论】:

      猜你喜欢
      • 2010-11-11
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多