PERFORCEやgitや共有フォルダに入れる独立した依存関係のないpython.exeのzipからのインストール方法

1. 作業用フォルダを作成する。

PC内のどこでもいいので、作業用フォルダPythonUSBを作成してください。その配下にpythonフォルダとcodeフォルダを作成します。このPythonUSBは最終的に共有フォルダにそのままコピーします。

├directory
│    └ PythonUSB/     <= 作業用フォルダー
│         ├ python/
│         └ code/
│             └ hello.py
│ 

2. pythonをダウンロードして配置する

pythonのページから、OSに合わせたダウンロードページに遷移してください。今回はWindowsで説明します。

Windowsのリンク先に行くと、バージョンがいくつかありますが、OSのbitに合わせたembeddableパッケージをダウンロードします。今回は、執筆時点で最新の3.12.0バージョン、64-bitを上述のpythonフォルダにダウンロードします。ダウンロードが完了したら、解凍しましょう。解凍後のフォルダ名がpython-3.12.0-embed-amd64と長いので、python-3.12.0に変更します。

3. pipを使えるようにする

先程のpython-3.12.0フォルダ内にpython312._pthがありますので、これをメモ帳で開きます。そして、#import site#を削除してimoprt siteに変更して保存します。

続いて、get-pip.pyのリンクを右クリックして「名前をつけてリンク先を保存」でpython-3.12.0フォルダにダウンロードします。
このファイルをコマンドプロンプトで実行するには、python-3.12.0フォルダをエクスプローラーで開き、アドレスに「cmd」と入力してEnterを押して、コマンドプロンプトを出現させます。そして、python.exe get-pip.pyを実行します。
これでpip installが使用することができるようになりました。

4. 使用するライブラリをインストールする

インストールするには、コマンドプロンプトでpython-3.12.0フォルダに移動して、python.exe -m pip install [ライブラリ]を実行します。例えば、p4vを操作するライブラリp4pythonをインストールするには以下のようにします。必要なライブラリを順次インストールしてください。

python.exe -m pip install p4python

5. 実行用バッチファイルを作成する

バッチファイルをクリックするだけでコードが実行できるようにします。execute.batを以下の位置に作成します。メモ帳のテキストファイルからファイル名を変更することで作成できます。今回はhello.pyというpythonファイルを実行する例を紹介します。

├directory
│    └ PythonUSB/     <= 作業用フォルダー
│         ├ python/
│         └ code/
│             └ hello.py
│         └ execute.bat

hello.pyの中身は以下の通りです。最後にinput関数を入れておくことで、コマンドプロンプトが自動で閉じるのを防いでいます。

print('Hello world!')

input('Close window to enter any key.')

execute.batの中身は以下の通りです。
@echo offがないと、set以下の内容がコマンドプロンプト上に表示されてしまいます。見栄えの問題ですね。
set xxx=yyyは変数を定義しています。この変数を利用する際には、%で挟んで上げる必要があります。
%~dp0は実行されるバッチファイルが置かれているカレントディレクトリを示します。今回の場合では、PythonUSBですね。
pyintpathpython.exeまでのパス、codepathcodeまでのパス、pyfileは実行したいpyファイル名の変数を設定します。
%pyintpath%python.exe %codepath%%pyfile%は、上述の変数を組み合わせてよく使うpython xxx.pyの形式になっています。

@echo off
set cwdirpath=%~dp0
set pyintpath=%cwdirpath%python\python-3.12.0\
set codepath=%cwdirpath%code\
set pyfile=hello.py

%pyintpath%python.exe %codepath%%pyfile%

実行結果は以下の通りです。意図通りの動きをしています。


6. 共有フォルダにコピーする

「PythonProj」フォルダを共有フォルダにコピーします。コピー先でもバッチファイルが実行できるか念のため確認しておきましょう。

pythonUSB.zip

https://drive.google.com/file/d/1OK-1uFEXMsj5JLxIMVtaLjgwIyIVfhvF/view?usp=sharing

または

https://github.com/nobolu-ootsuka-unrealengine/pythonUSB

参考サイト

https://qiita.com/r-shiomoto/items/ea8be09ffc21ea10a867

PERFORCEで、mark for delete したあとに workspaceで消したファイルを復帰してもが見えなくなる現象

PERFORCEで、mark for delete したあとに workspaceで消したファイルを復帰してもが見えなくなる現象

In Perforce, a file deleted in workspace is no longer visible after being marked for delete.

「The folder is not located within the filtered view of the tree.」

はp4vのエラーでPerforceのエラーではないそう。

p4vを再起動したら治った。

参考

https://stackoverflow.com/questions/57364883/what-does-not-located-within-the-filtered-view-of-the-tree-mean

より抜粋

「ツリーのフィルターされたビュー」は P4V のものであり、一般的な Perforce のものではありません (つまり、Viewクライアント仕様のビューと同じではありません)。タスクバー上の小さな漏斗アイコンを探すと、そこにワークスペース ペインのフィルターが設定されています。おそらく、このファイルを除外する何かがそこに設定されているのではないでしょうか? 「隠し」ファイルを除外する設定のようなものですか?

P4Python を使用した Perforce でのファイルの移動の下調べ

Rename/Moving files in Perforce using P4Python

P4Python を使用した Perforce でのファイルの移動

P4Python は Perforce C++ API の Python ラッパーであり、プログラムで Perforce サーバーと対話できるようにします。 P4Python を使用して Perforce でファイルを移動または名前変更するには、 メソッドを使用できますp4.run_move()

ファイルをデポ内の新しい場所に移動する方法の例を次に示します。

from P4 import P4

# Connect to the Perforce server
p4 = P4()
p4.connect()
p4.login(user, password)

# Open the file for edit
p4.run_edit("//depot/path/to/file.txt")

# Move the file to a new location
p4.run_move("//depot/path/to/file.txt", "//depot/new/path/renamed_file.txt")

# Submit the changes
p4.run_submit(["-d", "Moved and renamed file"])

この例では、まず を使用して Perforce サーバーに接続しp4.connect()、 を使用して資格情報でログインしますp4.login(user, password)。次に、 を使用して編集用にファイルを開きますp4.run_edit()

次に、 を使用してファイルを新しい場所に移動しますp4.run_move()。このメソッドは、ソース ファイル パスと宛先ファイル パス (必要に応じて新しい名前を含む) という 2 つの引数を取ります。

最後に、 を使用して変更を送信しp4.run_submit()、変更リストの説明を提供します。

ファイルを移動または名前変更するには、Perforce で適切な権限が必要であることに注意してください。さらに、プロセス中に発生する可能性のある例外やエラーを必ず処理してください。

情報源

[ 1 ]Helix Core P4Python 開発者ガイド (2023.2)

[ 2 ]p4 移動

[ 3 ]スクリプト – Python で perforce からファイルをチェックアウトするにはどうすればよいですか? – スタック…

[ 4 ]PERFORCE P4Wエラー:ファイルがクライアントビューにありません – コードログ

[ 5 ]ファイルの名前変更と移動