3

モジュールを web2py のアプリケーションの「modules」フォルダにコピーしました。コントローラー内の関数にモジュールをインポートしようとすると、次のエラーが発生します。

<type 'exceptions.ImportError'> No module named module_name

使用されているモジュールに関係なく、そのエラーが発生します。しかし、同じモジュールを「サイトパッケージ」にコピーしてインポートすると、完全に機能します。

「sys.path」にはモジュールフォルダーは含まれていませんが、「site-packages」フォルダーが含まれていることがわかりました。

モジュール フォルダを web2py 固有の "sys.path" に追加するにはどうすればよいですか? または、この問題を解決する他の方法はありますか?

4

5 に答える 5

4

ついに私の問題の解決策を見つけました。

を使用してモジュールディレクトリにモジュールをインポートするにimport module_nameは、アプリケーションの名前をすべて小文字にする必要があるようです。

以前は、アプリケーションの名前はでしたがprojectX、変更すると正常に機能しましprojectximport module_name

また、アプリケーション名がどのようなものであっても、モジュールのインポート中にアプリケーション名を明示的に指定することも機能することもわかりました。import applications.projectX.modules.module_nameアプリケーションの名前がだったときにも私のために働いたprojectX

于 2012-09-09T04:02:23.787 に答える
1

すでにローカル インポートを使用しようとしましたか?

このようなもの:

twitter = local_import('twitter')

ここで、twitter はモジュール フォルダーに保存したモジュールの名前です。

乾杯

于 2012-08-08T14:31:19.167 に答える
0

これは、PyCharm が参照を解決できるようにするインポート形式です。

import applications.dashboard.modules.user_info as user_info
于 2016-06-23T20:25:04.020 に答える
0

これに対して私が見つけた修正は、アプリケーションがパッケージであることを確認することです。

例として、foo アプリケーションがあり、ツリーが次のようになっているとします。

applications
├── __init__.py      <----- This file is probably missing
├── yourapplication
│   └── modules
│       ├── ...
├── ...
于 2016-07-21T05:16:32.480 に答える
0

期待どおりに動作するはずであり、私にとってはそうです。sys.path を変更する必要はありません。web2py がこれを処理します。そのディレクトリにモジュールが見つかることを期待しています。web2pyのバージョンは? ソースから実行していますか?(ソースディストリビューションをダウンロードして python web2py として開始しますか、それともプリコンパイル済みのバイナリディストリビューションを使用していますか?) 「コントローラー内の任意の関数でそのモジュールをインポートする」と言うとき、正確に何をしようとしていますか? 私の場合、デフォルト コントローラの上部またはモデル内での単純なインポートは、現在の安定版で機能します。

于 2012-07-31T21:17:23.990 に答える