簡體   English   中英

使用 import_module 從站點包訪問模塊

[英]use import_module to access module from site-packages

我想從我使用 pip 安裝的 package 的特定目錄中導入所有模塊,也就是說,它位於site-packages

我試過的

假設 package 名稱是package並且它有一個名為directory的目錄。 它有很多文件,如a.pyb.py等。我需要將它們全部導入。 我使用內置的__file__列出了directory中的所有文件,這不是問題。 當我嘗試使用importlib.import_module導入模塊時,我得到ModuleNotFoundError即使我 100% 確定它們存在。 我使用了相對導入。

代碼片段

modulesdirectory中所有文件的列表

for module in modules:
    importlib.import_module('.'+module, 'C:\\Users\\.....\\package\\directory')

ModuleNotFoundError: No module named 'C:\\Users\\.....\\package\\directory'

最后

我做錯了什么以及引用站點包的正確方法是什么?

在要執行的目錄下創建一個空的init .py 文件

import pkgutil
import sys


def load_all_modules_from_dir(dirname):
    for importer, package_name, _ in pkgutil.iter_modules([dirname]):
        full_package_name = '%s.%s' % (dirname, package_name)
        if full_package_name not in sys.modules:
            module = importer.find_module(package_name
                        ).load_module(full_package_name)
            print module


load_all_modules_from_dir('site-packages')

暫無
暫無

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

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