5
1

More than 3 years have passed since last update.

Python3のvenvで仮想環境を作成するところまで

Posted at

Python3のvenvについて

参考

仮想環境とパッケージ

環境

  • OS
    • Windows10
      • WSL2: Ubuntu18.04
  • 言語
    • anyenv
      • pyenv
        • python 3.8.5

導入

Introduction

  • Pythonで自己完結型のディレクトリツリーを作成すること。
  • ディレクトリごとにモジュールを独立させること。

仮想環境の作成

  • venvは通常、入手可能な最新バージョンのPythonをインストールします。
  • (pyenvなどを使用することによって)システムに複数のバージョンのPythonがある場合は、任意のバージョンを実行して特定のPythonバージョンを選択できる。
  • 仮想環境を作成するには、それを配置するディレクトリを決定し、ディレクトリパスを使用してスクリプトとしてvenvモジュールを実行する
仮想環境の作成
root@MY-PC:~/workspace/python# python3 -m venv <任意の名前>
ディレクトリを作成してから仮想環境を作成する場合
root@MY-PC:~/workspace/python# mkdir <任意の名前>
root@MY-PC:~/workspace/python# cd <任意の名前>
root@MY-PC:~/workspace/python/<任意の名前># python -m venv .

今回はtutorial-envという仮想環境を作成する

実行後
root@MY-PC:~/workspace/python# ls
tutorial-env
  • tutorial-envというディレクトリが存在しない場合は作成される
  • tutorial-envの中に以下のものが作成される
    • Pythonインタープリタのコピー
    • 標準ライブラリ
    • その他さまざまなサポートファイルを含むディレクトリ
ディレクトリ内部
root@MY-PC:~/workspace/python/tutorial-env# ls
bin  include  lib  lib64  pyvenv.cfg

仮想環境を作成したら、以下のコマンドでアクティベートできるようになる。

アクティベート
root@MY-PC:~/workspace/python/tutorial-env# source bin/activate
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# 

このスクリプトはbashシェル用に作成されています。csh,fishシェルを使用する場合は、代わりに使用するactivate.cshおよびactivate.fishスクリプトが用意されています。

仮想環境をアクティベートすると、シェルのプロンプトが変更され、先頭に「(turorial-env)」(実行中の仮想環境名)が追加されます。

プロンプト
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# 

この状態では、仮想環境内のpythonやpipが使用されます。

pythonとpipの参照
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# which pip
/root/workspace/python/tutorial-env/bin/pip
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# which python
/root/workspace/python/tutorial-env/bin/python

仮想環境の終了

deactivateを実行するとプロンプトが元に戻り仮想環境を終了することができる。

deactivate
(tutorial-env) root@MY-PC:~/workspace/python# deactivate
root@MY-PC:~/workspace/python# 

pip installでいろいろエラーが出る

pip installでエラーが多発していたのでメモ

ModuleNotFoundError: No module named '_ctypes'

以下の記事を参考にさせていただき…
[Qiita]pyenvで3.7系のインストールに失敗したときのメモ

Error
ModuleNotFoundError: No module named '_ctypes'

(1) 一旦pythonをアンインストール

Resolve-1
root@MY-PC:~/workspace/python# pyenv uninstall 3.8.5 
pyenv: remove /root/.anyenv/envs/pyenv/versions/3.8.5? [y|N]y
pyenv: 3.8.5 uninstalled

(2) libffi-devというものが必要なようなのでインストール

Resolve-2
root@MY-PC:~/workspace/python# apt install libffi-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  geoip-database libgeoip1 liblwres160 libmspack0 zerofree
Use 'apt autoremove' to remove them.
The following NEW packages will be installed:
  libffi-dev
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 156 kB of archives.
After this operation, 362 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu bionic/main amd64 libffi-dev amd64 3.2.1-8 [156 kB]
Fetched 156 kB in 1s (132 kB/s)      
Selecting previously unselected package libffi-dev:amd64.
(Reading database ... 36981 files and directories currently installed.)
Preparing to unpack .../libffi-dev_3.2.1-8_amd64.deb ...
Unpacking libffi-dev:amd64 (3.2.1-8) ...
Setting up libffi-dev:amd64 (3.2.1-8) ...
Processing triggers for install-info (6.5.0.dfsg.1-2) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...

(3) 再びpython3.8.5をインストール

Resolve-3
root@MY-PC:~/workspace/python# pyenv install 3.8.5
Downloading Python-3.8.5.tar.xz...
-> https://www.python.org/ftp/python/3.8.5/Python-3.8.5.tar.xz
Installing Python-3.8.5...
Installed Python-3.8.5 to /root/.anyenv/envs/pyenv/versions/3.8.5

root@MY-PC:~/workspace/python# 
root@MY-PC:~/workspace/python# python --version
Python 3.8.5

ModuleNotFoundError: No module named 'Cython'

今度はCythonがないと言われたのでそれっぽいことが書かれていた以下の記事を参考にさせていただき

[Github]ImportError: No module named Cython.Build #78

Error
ModuleNotFoundError: No module named 'Cython'
Resolve
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# pip install --upgrade cython
Collecting cython
  Using cached Cython-0.29.21-cp38-cp38-manylinux1_x86_64.whl (1.9 MB)
Installing collected packages: cython
Successfully installed cython-0.29.21

error: cmake not found, and CMAKE is not set.

今度はcmakeがないと言われたので

Error
error: `cmake` not found, and `CMAKE` is not set.
Resolve
(tutorial-env) root@MY-PC:~/workspace/python/tutorial-env# pip install cmake
Collecting cmake
  Downloading cmake-3.18.0-py3-none-manylinux1_x86_64.whl (18.2 MB)
     |████████████████████████████████| 18.2 MB 6.0 MB/s 
Installing collected packages: cmake
Successfully installed cmake-3.18.0
5
1
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
5
1