в macos "оболочка pipenv" => bash: update_terminal_cwd: команда не найдена - PullRequest
0 голосов
/ 01 мая 2019

Попытка заставить pipenv работать на macos 10.14.4.

$cat Pipfile
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]
numpy = "==1.14.1"

[requires]
python_version = "3.6.8"

Это работает:

 $pipenv --rm
Removing virtualenv (/Users/me/.local/share/virtualenvs/blah-zeMrhw5d)…

Это работает:

 $pipenv install
Creating a virtualenv for this project…
Pipfile: /Users/me/mypath/Pipfile
Using /Users/me/.pyenv/versions/3.6.8/bin/python3 (3.6.8) to create virtualenv…
⠏ Creating virtual environment...Using base prefix '/Users/me/.pyenv/versions/3.6.8'
New python executable in /Users/me/.local/share/virtualenvs/blah-zeMrhw5d/bin/python3
Also creating executable in /Users/me/.local/share/virtualenvs/blah-zeMrhw5d/bin/python
Installing setuptools, pip, wheel...
done.
Running virtualenv with interpreter /Users/me/.pyenv/versions/3.6.8/bin/python3

✔ Successfully created virtual environment! 
Virtualenv location: /Users/me/.local/share/virtualenvs/blah-zeMrhw5d
Pipfile.lock (7fd81f) out of date, updating to (89a067)…
Locking [dev-packages] dependencies…
Locking [packages] dependencies…
✔ Success! 
Updated Pipfile.lock (7fd81f)!
Installing dependencies from Pipfile.lock (7fd81f)…
  ?   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 1/1 — 00:00:02
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

Это НЕ работает:

$pipenv shell
Launching subshell in virtual environment…
 . /Users/alexryan/.local/share/virtualenvs/cabin_monitoring-zeMrhw5d/bin/activate
bash: update_terminal_cwd: command not found
$ . /Users/alexryan/.local/share/virtualenvs/cabin_monitoring-zeMrhw5d/bin/activate
bash: update_terminal_cwd: command not found
(cabin_monitoring) $

Эти ошибки выдаются каждый раз, когда я запускаю команду в этой среде.

(blah)  >ls -lF
total 12
-rw-r--r--  1 alexryan staff  159 Apr 30 14:49 Pipfile
-rw-r--r--  1 alexryan staff 2683 Apr 30 14:50 Pipfile.lock
...
bash: update_terminal_cwd: command not found
(blah) $
(cabin_monitoring)  >

из https://apple.stackexchange.com/a/139808/91429 Я вижу, что update_terminal_cwd определено /etc/bashrc

Я могу source /etc/bashrc убрать эту ошибку, но это портит мое приглашение, так что больше не очевидно, что я нахожусь в виртуальной среде.

(blah) $source /etc/bashrc
hostname:blah me$

Каков наилучший способ обеспечения правильной работы pipenv shell на macos?

UPDATE

Я использую pyenv для указания версии python, которую я хочу использовать, потому что pipenv, кажется, требует этого.

Я установил pyenv через curl https://pyenv.run | bash и добавил эти строки в ~/.bashrc по запросу:

# Load pyenv automatically by adding
# the following to ~/.bashrc:

export PATH="/Users/me/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

И убедился, что ~/.bashrc вызывается из ~/.bash_profile примерно так (потому что, по-видимому, pipenv shell является нелогиновой оболочкой ).

[[ -f ~/.bashrc ]] && source ~/.bashrc

pyenv работает нормально с несколькими установленными версиями python.

...