2016-02-18 14 views
7

Visual Studio with PTVS 2つの別々の Pythonプロジェクトがあり、1つは機能のライブラリとして使用するPythonソースファイルlib.pyもう1つはライブラリ内の関数を使用するメインです。私の考え方は、他の.NETプロジェクトへの参照を追加しているので、Visual Studioを使用PTVS:2番目のプロジェクトの1つのプロジェクトでPythonソースコードを参照または使用する方法

No module named lib

I主にプログラムF#で:私は、ライブラリプロジェクト内の関数を参照するが、次のエラーを取得するには、メインでimportステートメントを使用しています。

これを達成するためにPythonの方法でどう思いますか?

答えて

14

Pythonは.NETのような参照を使用しませんが、検索されるパスを使用します。検索パスは、ソースファイルを含むディレクトリを含むように変更する必要があります。参照:The Module Search Path

ソリューションエクスプローラでVisual Studioのプロジェクトを見ると、各プロジェクトの検索パスが表示されます。

enter image description here

検索パスを変更するには:

は、インポートするソースコードを含むPythonのファイルのディレクトリを取得します。

lib.pyのソリューションエクスプローラの右クリックでlib.py

およびモジュールをインポートしますプロジェクトのための今すぐコピーパス

enter image description here

を選択
例えばConsoleDriver_Python

右...検索パスをクリックして、パスを検索するフォルダを追加]を選択し、ダイアログフォルダ

enter image description here

右クリックを表示してからのパスに貼り付ける

enter image description here

クリップボード。また、ファイル名を削除してディレクトリに変更します。

enter image description here

クリックして[フォルダの選択

今すぐ検索パスが更新されたことを確認するためのプロジェクトをご確認ください。

enter image description here

インポートエラーは今クリアしてください。

+1

これはすばらしい答えです!よくできました! – Del

+0

興味深い:[PTVS - プロジェクト - 検索パス](https://github.com/Microsoft/PTVS/wiki/Projects#search-paths)PTVS検索パスに関する公式文書。 –

+0

上記のコメントのリンクが死んで、[Python Projects](https://docs.microsoft.com/en-us/visualstudio/python/python-projects)にリダイレクトされます。新しいページに目を通した後、PTVSが進化するにつれてこれを達成する別の方法があるかもしれません。私が時間を得るとき、私は答えを見直すつもりですが、今はPrologで首を絞っています。 –

3

非常に具体的なシナリオでは、確認された回答に加えて、以下を追加したかっただけです。

私は、最近、新しいドメインに移行されたユーザーアカウントを持っていた作業機械でOPが経験していたのと同じ問題を修正するように求められました。

セットアップ: のVisual Studio 2013 PTVS 2.2.30718 Anacondaは3.5

基本的には、AnacondaはLOCALMACHINE /ユーザーAのために設置しました。

ユーザーが新しいドメイン(newdomain/UserA)に移行されたら、表示>その他のWindows> Python環境をクリックして、VS2013からPython環境を更新する必要がありました。

これがセットアップされると、Pythonスクリプトは期待どおりに実行されますが、検索フォルダ参照は機能しません。彼らはその後、取り除かれ、再追加されたが役に立たなかった。

完全に新鮮なプロジェクトを設定し、検索パスを使用してリンクするなど、さまざまな試みが行われましたが、役に立たないものです。

問題を修正した唯一の問題は、(インストール中に「管理者権限を使用して、すべてのユーザーに対して」オプションをクリックして)ユーザーアカウントの外にPython環境(私の場合はAnaconda3)を再インストールすることでした。

その後、検索フォルダを再起動、削除、再追加し、すべての検索パスを含む期待どおりの動作をしました。

は私が

D :)

+0

ニースは知っています。ありがとう。 –

+0

良い発見。この問題の最終的な点 - 管理者権限でAnacondaを再インストールした後も、Windowsをマシンを再起動してすべてを並べ替える必要があり、VSが検索パスを正しく調整する必要があります。 –

0

...私はちょうどそれを解決する時間を無駄にしているが、誰かの役に立てば幸いか、次でのコードでこれを行うことができます:だから

sys.path.append("search path") 

IDEの外部でコードを実行することができます。

+0

通常、私は質問に対する合理的な答えを自動的にupvoteします。私はあなたの答えを有効なオプションとして見ていますが、 'sys.path.insert()'がより良いかもしれないので、正しいと投票することを躊躇しています。しかし、もっと重要なのは、あなたがすでにSOこれはリンク付きのコメントでなければならないということです。他の人が知っていることは良い選択だと私は理解していますので、私は投票しません。 –

関連する問題