簡體   English   中英

通過站點包中安裝的版本導入模塊的開發版本

[英]import the development version of a module over the version that is installed in site-packages

在這個示例中,我正在開發一個python模塊,該模塊目前是封閉源代碼, 無法進行pip操作(不是我的選擇),我將其稱為private_module 這個模塊依賴於我也在開發的另一個模塊,該模塊可以在pip 獲得,我將其稱為public_module 這是問題private_modulepublic_module的開發版本在我與同事共享的Windows服務器上的目錄中。 需要訪問代碼的計算機具有其可變的python含義的可變文件權限,很難通過pip安裝任何內容,但同時,它們的site-packages目錄中可能存在持久的private_modulepublic_module版本。 還要假設所有用戶都沒有編程經驗,即使他們沒有計算機經驗,如果沒有管理員權限,計算機將無法使用pip安裝軟件包。

目錄結構可以這樣表示:

  • C:\\ Program Files \\ Anaconda3 \\ lib \\ site-packages \\ [過時的公共和私有模塊]

  • F:\\ PythonModules \\ exp \\ [新的公共和私有模塊]

我已經嘗試了以下方法,並且如果尚未將模塊安裝到pip中,但是以pip安裝的模塊似乎比其他模塊更易於加載,則可以完美地工作。

import os
staging = [r"F:\PythonModules\exp"]

for path in staging:
    if os.path.isdir(path):
        sys.path.append(path)

有沒有一種方法可以將新的公共模塊和私有模塊加載到站點包中的對應模塊上?

這在某種程度上是一種解決方法,但是它應適合您的情況-您可以在sys.path的開頭添加私有模塊,因此將在公共pip版本之前讀取它。 像這樣:

import sys
sys.path.insert(0,"F:\PythonModules\exp")

暫無
暫無

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

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