1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
你的激活腳本是什么樣的?它的主要目的是在 PATH 的開頭插入 Python。
這是我的:
VIRTUAL_ENV="/Users/myuser/kds2/py2/venv38"
export VIRTUAL_ENV
_OLD_VIRTUAL_PATH="$PATH"
PATH="$VIRTUAL_ENV/bin:$PATH"
在運(yùn)行之前activate,我的 PATH 中有這個(gè)(我使用實(shí)用程序?qū)⑵渲鹦蟹指睿?/p>
0 /Users/myuser/.cargo/bin
1 /Users/myuser/.nvm/versions/node/v10.15.0/bin
2 /opt/local/bin
激活后
0 /Users/myuser/kds2/py2/venv38/bin
1 /Users/myuser/.cargo/bin
2 /Users/myuser/.nvm/versions/node/v10.15.0/bin
所以,基本上,它所做的一切都是在 PATH 上加上前綴$VIRTUAL_ENV/bin
我建議你看一下激活并嘗試看看它的作用。$VIRTUAL_ENV 有什么問(wèn)題嗎?它確實(shí)被硬編碼到激活位置。
printf "\n$VIRTUALENV:$VIRTUALENV:\n"可能會(huì)給你一個(gè)線索,了解正在發(fā)生的事情。
VIRTUALENV=$(fnp $BASH_SOURCE/../..)同樣可以做到這一點(diǎn),
現(xiàn)在,接下來(lái)是你的實(shí)際目錄是什么樣的:
如果我在cdvenv 的正上方,我有這樣的樹結(jié)構(gòu):
tree -d -L 2 venv
venv
├── bin
│ └── __pycache__
├── cx_Oracle-doc
├── include
├── lib
│ └── python3.6
├── man
│ └── man1
└── share
├── doc
├── jupyter
└── man
現(xiàn)在,你的可能會(huì)有所不同。3.6可能是我的剩余。但有一個(gè)目錄結(jié)構(gòu),里面充滿了文件。
讓我們cd進(jìn)入 bin,即 activate-ion 之后我的第一個(gè) PATH 條目
和ls -l python
(venv38) myuser@bin$ ls -l python
lrwxr-xr-x 1 myuser staff 9 May 29 13:15 python -> python3.8
這只是為了使其與版本無(wú)關(guān)。
讓我們ls -l python3.8
lrwxr-xr-x 1 myuser staff 73 May 29 13:15 python3.8 -> /opt/local/Library/Frameworks/Python.framework/Versions/3.8/bin/python3.8
這就是 macports 放置 Python 的地方。如果你使用brew,它應(yīng)該在類似的地方/usr/local/(我認(rèn)為)。
是的,我可以啟動(dòng)它:
(venv38) myuser@bin$ python3.8
Python 3.8.1 (default, Jan 5 2020, 21:32:35)
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
現(xiàn)在,其中任何一項(xiàng)都可能失敗,但需要通過(guò)步驟來(lái)驗(yàn)證發(fā)生了什么:
正在設(shè)置路徑
venv/bin 內(nèi)容
實(shí)際的 Python 被指向 venv/bin
然后你就可以推理出問(wèn)題的原因。
而且,如果您想知道的是 3.7 與 3.8 的項(xiàng)目,也許您可以在那時(shí)rm python
修復(fù)ln -s /usr/local/opt/python/bin/python3.8 python
。
但在執(zhí)行此操作之前,請(qǐng)查看 python 的時(shí)間戳,該時(shí)間戳可能指向 3.7。符號(hào)鏈接帶有鏈接創(chuàng)建的時(shí)間。這敲響了警鐘嗎?你當(dāng)時(shí)安裝了什么東西嗎?也許與點(diǎn)有關(guān)?
現(xiàn)在,我已經(jīng)讓 Python 3.6/3.7/3.8 共存了,基本上沒有問(wèn)題。但如果可以的話,也許可以考慮標(biāo)準(zhǔn)化 1 個(gè)版本,除非你的 venv 穩(wěn)定了?
添加回答
舉報(bào)