質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Q&A

1回答

2998閲覧

pip install -e .でパッケージとしてインストールするもimport mypackage が上手く機能していない。

sequelanonymous

総合スコア123

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

0グッド

0クリップ

投稿2019/07/08 08:33

以下のURL先の動画の前半のやり方通りにやってみています。
https://www.youtube.com/watch?v=P3dY3uDmnkU が、どおりでうまくいきません。

動画にもあるように私の理解では、setup.pyをかき、pip install -e .をするとsite-packageに__init__.pyのあるディレクトリ(mypackage)がパッケージとして登録されるため、どの階層からでもimport mypackageができるという認識でいます。現状、以下のコードだとトップディレクトリからimportできません。これだとsetup.pyを書いてpip install -e .をする意味がないです。私の理解があっているかどうか、もしくは何かしらお気づきの点ありましたらご教示頂けませんでしょうか?

(myvenv)~/local/xxx/mypackage $ python Python 3.7.0 (xxx) [Clang 9.1.0 (clang-902.0.39.1)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import mypackage >>> mypackage.MyPackage().spam() 'eggs' >>> exit() ↓ 以下でも上記と同じように上手くいくようにしたい。(動画だと上手くいってる) $ cd .. (myvenv)~/local/xxx $ python Python 3.7.0 (xxx) [Clang 9.1.0 (clang-902.0.39.1)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import mypackage >>> mypackage.MyPackage().spam() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'mypackage' has no attribute 'MyPackage'
. ├── mypackage │   ├── __init__.py │   └── mypackage.py ├── myvenv └── setup.py

setup.py

from setuptools import setup, find_packages setup( name='mypackage', version='0.0.1', description='My first package', packages=setuptools.find_packages(), )

mypackage.py

class MyPackage(): def spam(self): return "eggs"

pip freezeすると以下のようなエラーが出ていますが、関係はなさそうだと思い、無視しています。

(myvenv) $ pip freeze ERROR: Complete output from command git rev-parse HEAD: ERROR: fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' HEAD ---------------------------------------- WARNING: Error when trying to get requirement for VCS system Command "git rev-parse HEAD" failed with error code 128 in /Users/xxxx/local/xxxx, falling back to uneditable format WARNING: Could not determine repository location of /Users/xxx/local/xxx ## !! Could not determine repository location mypackage==0.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

あるあるなのが、複数のpythonが入っていて、違う方のpipでインストールしてダメダメ、ってことがあります。
そこらへん確認してみましょう

投稿2019/07/08 08:55

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sequelanonymous

2019/07/08 09:25

ありがとうございます。確認してみました。以下を見る限り、特にそのへんの問題はなさそうな気がしています。 ``` (myvenv) ~/local/test-mypackage $ python Python 3.7.0 (xxx) [Clang 9.1.0 (clang-902.0.39.1)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import mypackage >>> mypackage <module 'mypackage' from '/Users/xxx/local/test-mypackage/mypackage/__init__.py'> >>> mypackage.MyPackage() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: module 'mypackage' has no attribute 'MyPackage' >>> exit() (myvenv) ~/local/test-mypackage $ which pip /Users/xxx/local/test-mypackage/myvenv/bin/pip (myvenv) ~/local/test-mypackage $ which python /Users/xxx/local/test-mypackage/myvenv/bin/python (myvenv) ~/local/test-mypackage $ pip -V pip 10.0.1 from /Users/xxx/local/test-mypackage/myvenv/lib/python3.7/site-packages/pip (python 3.7) (myvenv) ~/local/test-mypackage $ python -V Python 3.7.0 ```
sequelanonymous

2019/07/08 10:02

そもそも、これってpip install -e .をしただけでトップディレクトリからimportして使えるようになるものなのか不安になってきました。もし、なにかご存知でしたら教えて頂きたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問