本地安装与pip安装的python代码的工作方式不同

2024-04-26 10:10:07 发布

您现在位置:Python中文网/ 问答频道 /正文

这太疯狂了_导入.py你知道吗

import pieqt
import sys
import importlib
def mad_import(module):
    #for module in modules:
    libs = [m[0] for m in filter(lambda a: type(a[1]) == type(module), module.__dict__.items())]
    print(libs)
    for lib in libs:
        __import__(lib)
    generate_runtime_python_imports(libs,module)
    generate_runtime_python_imports_from(libs)
    importlib.import_module('runtime_python_imports_from')
    # __import__('runtime_python_imports_from.py')
    #return libs



def generate_runtime_python_imports(libs,module):
    dic = module.__dict__.items()
    moduleNames = []
    roukzouk = []
    for key in dic:
        for lib in libs:
            print(key[1])
            if key[1]!=None and lib in str(key[1]) and 'from' not in str(key[1]):
                print(True)
                roukzouk.append(str(key[1]))
                # sys.exit()
            if key[1] != None:
                d=str(key[1])+'s'
            moduleNames.append(d)

    print('-'*100)
    import_line_text = ""
    for import_line in roukzouk:
        for lib in libs:
            import_line = import_line[import_line.find(lib):].rstrip("'>")
            print(import_line)
            import_line_text+="import "+import_line+"\n"
    with open("runtime_python_imports.py", "w") as runtime_python_imports:
        runtime_python_imports.write(import_line_text)

def generate_runtime_python_imports_from(libs):
    import_line_from_text = ""
    for lib in libs:
        import_line_from_text += "from "+lib+" import *\n"
    with open("runtime_python_imports_from.py", "w") as runtime_python_imports_from:
        runtime_python_imports_from.write(import_line_from_text)

# import importlib
# for module in moduleNames:
#   if module not in {'__name__','__doc__','__package__','__loader__','__spec__','__file__','__cached__','__builtins__'}:
#       importlib.import_module(module)
# print(QApplication)

# mad_import(pieqt)

这是皮耶克你知道吗

import PySide2
import PySide2.QtCore
from PySide2.QtGui import*
from PySide2.QtWidgets import*

QApplication = PySide2.QtWidgets.QApplication
QTextEdit = PySide2.QtWidgets.QTextEdit
QLabel = PySide2.QtWidgets.QLabel
QPushButton = PySide2.QtWidgets.QPushButton
QCheckBox = PySide2.QtWidgets.QCheckBox
QMainWindow = PySide2.QtWidgets.QMainWindow
QVBoxLayout = PySide2.QtWidgets.QVBoxLayout
QWidget = PySide2.QtWidgets.QWidget

def user_function():
    print("I am a user function")
callbacks = []
def run():
    global callbacks
    for callback in callbacks:
        callback()
def callback_user_functions():
    global callbacks
    for callback in callbacks:
        callback()
def add_function(function):
    global callbacks
    callbacks.append(function)
def main():
    print("Enter your code below!!!")
    global callbacks
    add_function(user_function)
    run()
    #callback_user_functions()

if __name__ == "__main__":
    main()

这简直是疯了_导入.py你知道吗

import pieqt
from pieqt import *
import mad_import

mad_import.mad_import(pieqt)
print(QTableView)

当我发疯的时候_导入.py在那个文件夹中,它工作正常(我可以称之为mad)_import.mad\u导入(pieqt)和QTableView存在)

但是当我去另一个目录进行测试时,我会pip安装我的包(我在GitHub中上传了这个包,并使用了twine),但是我不能调用mad_import.mad\u导入(皮埃克)。 它给出TypeError:“module”对象不可调用(如果我执行mad\u import(pieqt)) AttributeError:module'foo'没有属性'foo'(当我这样做时)_import.mad\u导入(皮埃克)

那么,安装pip的软件与将所有文件都放在本地文件夹中有区别吗?你知道吗


Tags: infromimportforlibdeflineimports