2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

この記事誰得? 私しか得しないニッチな技術で記事投稿!

virtualenvを用いずに仮想環境に入る

Last updated at Posted at 2023-06-22

PEP668により、/usr/local/libや$HOME/.local/libへのpipによるモジュールインストールができなくなった。

「俺流!PEP668とうまくやっていく方法 https://blog.jp.square-enix.com/iteng-blog/posts/00043-play-with-the-pep668/ 」によると、これはsys.prefix / sys.exec_prefix変数で制御されているらしい。さらに、その制御の仕方は、「venvが動作する仕組みを調べてみた https://endy-tech.hatenablog.jp/entry/how_venv_works_in_python 」で解説されている。総合すると、virtualenvを使わずとも、以下の手順で実現できる。

  • sitecustomize.pyを用意する。1
PREFIX=/$HOME/internal PYTHONRELPATH=$(python3 -c 'import distutils.sysconfig as sysconf; import os; print(sysconf.get_python_lib(prefix="/"))') bash -c '
mkdir -p ${PREFIX}${PYTHONRELPATH}
echo "import sys; sys.prefix=sys.exec_prefix=\"${PREFIX}\"; sys.path.insert(0,\"${PREFIX}${PYTHONRELPATH}\");" > ${PREFIX}${PYTHONRELPATH}/sitecustomize.py
'
  • ${PREFIX}${PYTHONRELPATH}をPYTHONPATHに追加する。

シェルからpipを呼ぶときには実用性皆無ですが、外部ビルドツールからpipを呼びたい場合とかに有用かなと思いました。

  1. 弊で普通に行われているのだが一般に普通かは知らない

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?