簡體   English   中英

如何在單獨的 setup.py 文件中進行所有導入,然后在 main.py 中導入此文件?

[英]How to make all my imports in a separete setup.py file then importing this file in 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東西,因為“setup”可能與之前分配的值沖突 - 例如:

import install_packages
__import__('install_packages', globals={"__name__": __name__})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM