pipenv工程中的初始化lib

2021-09-10 03:53:09 字數 1718 閱讀 8399

首先請準備以下原始碼:

pipenv:

virtualenv:

從使用pipenv開始,就有乙個問題,初始的pipenv工程目錄下面,有哪些lib庫呢?

在工程的lib目錄下ls,看到pipenv install之後最初的庫列表,如上圖所示。

首先,我們可以確定的是大部分標準庫都是以symbol link 的方式存在的(當然,只是大部分),這也使得標準庫的乙個檔案可以被多個虛擬工程共享,而不必存在多分,是一種高效的儲存方式。

但是,有幾個疑問:

1.看起來都是標準庫,但不確定是不是全集

2.安裝的第三方庫都不會在這裡出現嗎?還是只是巧合?

3.在python的環境中安裝乙個第三方庫,時機(虛擬工程建立前 / 建立後),有分別嗎?

這幾個問題一直困擾我,讓我下決心花點時間搞清楚它們。

首先,我準備從命令列pipenv install 入手,看能不能直接找到答案,所以,我開啟了pipenv原始碼目錄下的shells.py,大失所望,裡面只是對命令列引數的說明,新增而已。

所以,也沒有關於lib的線索。

接著,我開啟了pipenv/core.py,心想,無論如何,這次總能有所發現吧。

我很快在core.py裡面找到了這麼乙個函式,用來建立目錄,看來距離答案不遠:

接下來,看到了命令列:

接下來就是執行命令列,建立工程的地方了:

可以看到,pipenv只是virtualenv的乙個包裝,工程建立仍然是virtualenv的工作,所有,接下來,我們不得不檢視一下pipenv的**來找到最終答案了。

在virtualenv/virtualenv.py中,找到main函式,發現呼叫的是如下函式建立虛擬目錄:

接下來,呼叫install_python() -> copy_required_modules():

看來這兒的required_modules應該基本上就是我們想要的答案了:

我們發現,是一些預置好的標準庫列表,並不是全部;而且,根據python2/3版本的不同,模組的列表也會有所不同。

初始化 關於tensorflow的初始化

在寫mnist手寫體識別任務 已放github 時遇到的 問題 我們都知道在session run的時候需要初始化。但是初始化在什麼位置是至關重要的。來看下這段 sess tf.session sess.run tf.global variables initializer mnist model ...

c 中的初始化

當物件建立是就獲得了乙個特定的值,我們就說這個物件被初始化了。c 物件初始化通常有4種形式,但並非每種風格都支援所有型別,下面是對各種風格的總結。通常初始化的4種形式 int units solds 0 int units solds 0 int units solds int units sold...

C 中的初始化

這裡概括性的討論了c 中的初始化規則,一些具體型別還需單獨討論。1 當物件在建立時獲得了乙個特定的值,我們說這個物件被初始化了。用於初始化變數的值可以是任意複雜的表示式。2 初始化不是賦值,初始化的含義是建立變數時賦予其乙個初始值,而賦值的含義是把物件的當前值擦除,以乙個新值來代替。3 初始化可分為...