2016-12-28 3 views
0

クライアントのリクエストに応じて、* .pycファイルだけを使用してクローズドソースのPythonプログラムを配布する必要があり、pypy経由で実行する必要があります。PyPyは* .pycファイルのみで構成されたモジュールを見つけられません

プログラムは、様々なモジュールがインポートされたサブディレクトリがあります

start.pyc 
backends/ 
    server.pyc 
    ... 

backends.server start.py輸入の最初の行を、標準「パイソン」モードで動作しているときに動作します。 しかし、私はすべての*の.pyファイルを削除し、

(pypy)[email protected]:~ python start.pyc 

Traceback (most recent call last): 
    File "./start.py", line 4, in <module> 
ImportError: No module named backends.server 

を実行しようとした場合、私は「バックエンド」という名前のモジュールが「バックエンド」サブディレクトリがあっても、見つからないというエラーを取得し、サーバー.pycファイルがあります。

正確にこの動作のためにpypy用のスイッチがあったことを覚えていますが、私はもはやそれを見つけることができません。どんな助け?

PSこれは組み込みARMシステムで使用するpypy/pythonバージョンです。ここで

Python 2.7.10 (c95650101a99, Sep 06 2016, 11:02:19) 
[PyPy 5.4.1 with GCC 4.7.2 20120731 (prerelease)] 
+0

'.pyc'ファイルにはCPythonバイトコードが含まれています。 PyPyはPyPyと互換性のない '.pyc'ファイルを(私が知る限りは)作り出す独自の内部コード表現を持っています。同じ問題がこのメーリングリストで尋ねられます:https://mail.python.org/pipermail/pypy-dev/2011-May/007395.html –

+0

これはPyPy venvから私が 'python -m compileall 。私のプロジェクトのすべての* .pycを再生成します。私はPypy互換の方法でPyPyによって生成されると思います。さらに、pypyでpycファイルを実行すると、上記のエラーが発生します。これは意味があり、pyc(つまりインポート)に含める必要があります。 – zontar

答えて

0

は単独.pycファイルのファイルを読み込む有効にする方法は、(主にテストされていないが、動作するはず)です。 (それは標準PyPyで動作)難読化が目標である場合、あなたはまた、独自のインポートフックを書いて、独自のカスタムファイル形式からモジュールをロードすることができ

cd pypy/goal 
./rpython -Ojit targetpypystandalone.py --objspace-lonepycfiles 

:あなたがソースからpypyを変換する必要があります。

最後に、わかりませんが、.pycファイルがまだ見つかっていて、.zipファイルから読み込まれていると思います。したがって、アプリケーションの.pycファイルを.zipにパッケージ化し、通常のインポートメカニズムで.zipファイルを使用できるようにすると(つまり、.zipファイル自体のパスをsys.pathに追加することを意味します)、標準のPyPyも。

リバースエンジニアリングの容易性についての一般的なコメント.pycファイルは.pyファイルに戻って適用されます。

+0

ありがとうございます。rpythonで翻訳すると動作しません。マシン上にrpythonを持っています。私は数ヶ月前にそれをもっと簡単な方法でやっていたことを覚えています。また、コマンドラインスイッチの--objspace-lonepycfilesはpypyによって認識されません(二重ダッシュまたは二重ダッシュのいずれかで、未知のオプションとして扱われます)。多分私は間違った方法を呼んでいますか? – zontar

+0

実行時にpypyに与えることはできません。カスタムpypyの翻訳方法を調べたくない場合は、.zipを選択してみてください。 –

+0

ありがとうございますが、より具体的にできますか?私はzipのすべてをパッケージ化する前に、インポート命令の中で何かを変更しますか? https://docs.python.org/2/library/zipimport.htmlの他にリンクがありますか?ありがとう – zontar

関連する問題