簡體   English   中英

VirtualEnv python 導入不能從項目文件夾工作,只有 virtualenv 文件夾

[英]VirtualEnv python imports not working from project folder, only virtualenv folder

我在嘗試導入通過 pip 在我的項目目錄中安裝的模塊時遇到了 virtualenv 問題(從虛擬 env. 目錄開始)。

我的項目結構是;

\Project
..\dev    (virtual env)
..test.py

我已經在我的虛擬環境上下文中使用 pip 安裝了水泥,但是當我嘗試包含它時,我遇到了導入錯誤。

從我的項目文件夾的根目錄;

Project$ source dev/bin/activate
(dev) Project$ pip list
cement (2.10.2)
pip (9.0.1)
setuptools (36.6.0)
wheel (0.30.0)

一切看起來都不錯。

(dev) Project$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "cement.py", line 1, in <module>
    from cement.core.foundation import CementApp
ImportError: No module named core.foundation
>>> quit()

於是我cd進入虛擬環境目錄;

(dev) Project$ cd dev/
(dev) dev$ python
Python 2.7.10 (default, Feb  7 2017, 00:08:15)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from cement.core.foundation import CementApp
>>>

導入在 virtualenv 目錄中工作正常。

這是正確的行為嗎? 我需要將我的 src 文件存儲在 virtualenv 目錄中嗎? 因為我的印象是我的應用程序可以存在於 virtualenv 目錄之外,但是一旦在 virtualenv 中訪問已安裝的模塊處於活動狀態?

這是正確的行為嗎?

不,這不是正確的行為。 激活 virtualenv 后,您應該能夠從任何目錄運行python ,甚至在您的項目之外,並且from cement.core.foundation import CementApp應該可以工作。

我需要將我的 src 文件存儲在 virtualenv 目錄中嗎?

不,您絕對不能將源文件移動到 virtualenv 目錄中。

因為我的印象是我的應用程序可以存在於 virtualenv 目錄之外,但是一旦在 virtualenv 中訪問已安裝的模塊處於活動狀態?

這是正確的,它應該工作。

我能想到的唯一可能阻止它工作的是您的 virtualenv 目錄( dev )以某種方式損壞/損壞。 我建議重新創建它,這應該很容易。

這是正確的行為。 你在你的虛擬環境中安裝了與項目相關的包,這樣它就不會與你計算機的原始 python-pip 中的包混淆。 版本不匹配有時是一個嚴重的問題,為了防止我們使用虛擬環境。

暫無
暫無

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

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