0

Pythonさまざまなコンピューターの USB ドライブから実行されるアプリケーションを作成しようとしています。ちょっとの間、クライアント コンピューターに Python がインストールされていると仮定して、それは脇に置いておきます。

cherrypy のアプリケーションはlocal web server.

この問題に可能な限り透過的に対処するには、何が最善でしょうか?

技術者以外のユーザーが使用できる必要があり、依存関係を自分でインストールすることを心配する必要はありません。

現時点ではcherrypy source、アプリに のコピーをパッケージ化しました。プログラムがまだインストールされていないことを検出した場合、プログラムは を実行しますsetup.pyが、--user flag権限の問題を回避します。

これは良い練習とは思えません。

ビルドされたパッケージをアプリに含めることはできますか? 私は次のようなものでこれをやろうとしました:

/myapp/libs/cherrypy

cherrypyからディレクトリをコピーしましたCherryPy archive。これは事前にビルドされているため、おそらく機能しません。setup.pyまた、代わりに実行する場所(ビルド ディレクトリを作成する) を試し、代わりにそれらのファイルをコピーしました。

/myapp/somefile.py

import myapp.libs.cherrypy as cherrypy

理論的には、これは機能するはずですが、そうではありません。(を使用して) サーバーを実行しようとすると、サーバーcherrpy.quickstart()の 2 つのインスタンスが実行され、明らかに問題が発生し始めます。

だから、質問:まず、私はこれを完全に間違った方法で行っていますか?アプリでサードパーティ パッケージを利用できるようにするにはどうすればよいですか?

4

1 に答える 1

1

これは PYTHONPATH の問題によるものです。インポートまたは外部で取得したパッケージを操作する場合は、仮想環境と pip を標準として使用することをお勧めします。

ここにいくつかの重要な注意事項があります: https://python-guide.readthedocs.org/en/latest/

独自のコードをインポートしたい場合。PYTHONPATH (この場合は dev_folder の下) をルート開発ディレクトリに設定し、この構造に従います...

dev_folder \
- project_name \
    - main_script.py
    - helper.py
    - libary1 \
        - __init__.py
        - lib1.py
    - libary2 \
        - __init__.py
        - lib2.py

あなたは明らかにライブラリフォルダ/パッケージのより良い名前を思いつくでしょう:-)

お役に立てれば。

于 2013-01-27T20:25:23.413 に答える