0
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?

batファイルをぽちっとするだけでPython仮想環境(venv)に入らせたい

Posted at

やりたいことは題名の通り。

Pythonの仮想環境を丸ごと配布して、モジュールのインストールとか諸々をすっ飛ばしてPythonを実行させたい。

具体的な流れは以下の通り。


Venvで作成した環境(フォルダ)を丸ごと配布する。
※フォルダ内にactivateさせる為のbatファイルとps1ファイルをぶち込んでおく。

配布先でデスクトップ等にbatファイルのショートカットを作成させる。

batファイル ぽちっ

勝手に仮想環境に入って、勝手にコマンド実行して、Pythonファイルを実行してくれた!


以上のようなことはやりたい。

...「Pythonって単語だけ知ってる!」みたいな人が会社にいたので、
「ライブラリ インストールとか無理だろ...」と諦めたのが発端です


独り言は程々にしておきまして、必要なものは以下の4つ。
・作ったVenv環境
(環境構築の方法はGoogle先生に聞けば一発なので割愛)
・batファイル(powershell起動→ps1ファイルを実行させるのに必要)
・ps1ファイル(venvに必要な「activate」だったり「deactivate」を記述)
・配布したいpythonのファイル(今回は"hello world"するだけ)


venv環境構築

Google先生や先人に丸投げするので割愛します。
ファイル構成については重要な部分のみ公開。
最初に中身だけ公開

VENV ファイル構成
├Include
├Lib
├program
│  ├venv_activate.ps1
│  ├ps1_execute.bat
│  └test.py

└Scripts
 └初期のまま

batファイル

ps1_execute.bat
echo "hello world"
powershell -ExecutionPolicy RemoteSigned ./venv_activate.ps1
echo "goodbye world"

pause

中身についての説明
1行目,3行目はテキトーな文言
2行目は「指定したps1ファイルをps1を実行可能なポリシーである[RemotoSigned]で起動させます!」ってことです。

会社でパソコンを配布されていたりするとps1ファイルを実行させようとしても、powershellのポリシーに引っ掛かる可能性があります。なので、そのポリシーを一時的に変更させます。
この手法だとプログラム終了後は[Restricted]というps1を実行できないポリシーに戻す事ができます。

ps1ファイル

venv_activate.ps1
cd ..
cd scripts
.\activate
cd ..

cd .\program
python .\test.py
cd ..
cd scripts
deactivate

大事なのは[.\activate]と[deactivate]の2つのコマンドです。
それ以外はディレクトリ移動してるだけなので、そこは自分の環境に合わせて書き換えてください。
自分は[scripts]と[program]という2つのディレクトリを跨ぐ必要があるので、cdコマンドを書いています。
※[python ~~.py]は自分で作成したファイル名に合わせた変更を忘れないように・・・

test.py

test.py
print("hello world")

これで以上です。うまくいけば[hello world]と表示されて終了です。

ちゃんとactivateされてるか不安という方はvenv環境にインストールをしていないモジュールをファイル内でインポートを試してみては・・・?
例えば、pandasをインストールせずに
上記と同じような流れで以下ファイルを実行すると
エラーを表示します。

test.py
import pandas
print("hello world")

仮想環境にインストールしていないので、「そんなライブラリはありませんけど!!??」ってpythonから怒られるはずです。

# 最後に
これでデスクトップにbatファイルのショートカットを作成すると
ショートカットをダブルクリックするだけでvenv内のpythonファイルを実行してくれます。
これより最適な方法はあるとは思いますが...

これが初めて書いた記事なので見辛いかとは思いますが、
何卒ご容赦を・・・

0
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
0
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?