質問編集履歴
2
プロジェクトの構造とどうやって実行しているかの記述を追加。正常に動いた場合の出力結果とpip3 installされたやつを実行して失敗したときの出力結果を追加
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -1,13 +1,79 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            setup.cfgとsetup.pyでpip3 installしたプログラムが動作しない。プロジェクトフォルダ上で直接実行すると動きます。おそらくsetup.cfgの書き方が間違っているのですが、[setuptools](https://setuptools.pypa.io/en/latest/index.html)を読んでみてもいまいち正しい書き方がわかりません。参考になりそうな記事もソースコードがプロジェクトのルートではなく配下にsrcフォルダ等作ってそちらにソースコードをすべて入れているような記述でプロジェクトのルート直下にソースコードをおいてる場合どうすればいいのかがわかりません。
         
     | 
| 
      
 1 
     | 
    
         
            +
            setup.cfgとsetup.pyでpip3 installしたプログラムが動作しない。プロジェクトフォルダ上で直接実行すると動きます。おそらくsetup.cfgの書き方が間違っているのですが、[setuptools](https://setuptools.pypa.io/en/latest/index.html)を読んでみてもいまいち正しい書き方がわかりません。参考になりそうな記事もソースコードがプロジェクトのルート(setup.pyとsetup.cfgが置かれているディレクトリを指します)ではなく配下にsrcフォルダ等作ってそちらにソースコードをすべて入れているような記述でプロジェクトのルート直下にソースコードをおいてる場合どうすればいいのかがわかりません。
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            ## 
     | 
| 
      
 3 
     | 
    
         
            +
            ## 実現したいこと
         
     | 
| 
       4 
4 
     | 
    
         
             
            [elodie](https://github.com/jmathai/elodie)というpythonで書かれたプログラムを```pip3 install ./``` にて依存関係もまとめてインストールしパスを通った状態にして実行できるようにしたいです。
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
       6 
6 
     | 
    
         
             
            - [ ] プロジェクトフォルダ内で```pip3 install ./```したら依存関係をまとめてインストールする。
         
     | 
| 
       7 
7 
     | 
    
         
             
            - [ ] ```$HOME/.local/bin/```にインストールされ、コマンドとしてパスが通ってる状態にする。
         
     | 
| 
      
 8 
     | 
    
         
            +
            ## 実行環境とやったこと
         
     | 
| 
      
 9 
     | 
    
         
            +
            ### プロジェクトフォルダの中身
         
     | 
| 
      
 10 
     | 
    
         
            +
            下記リンクを参照してください。
         
     | 
| 
      
 11 
     | 
    
         
            +
            [https://github.com/chekke1999/elodie/tree/teratail-qa-branch](https://github.com/chekke1999/elodie/tree/teratail-qa-branch)
         
     | 
| 
       8 
12 
     | 
    
         | 
| 
      
 13 
     | 
    
         
            +
            下記のdockerfileとdocker-composeの内容で作ったコンテナに```docker exec -it elodie ash```で入ります。
         
     | 
| 
      
 14 
     | 
    
         
            +
            ```Dockerfile
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
            FROM python:3.10.5-alpine3.16
         
     | 
| 
      
 16 
     | 
    
         
            +
            ARG USER_NAME
         
     | 
| 
      
 17 
     | 
    
         
            +
            ARG UID
         
     | 
| 
      
 18 
     | 
    
         
            +
            ARG GID
         
     | 
| 
      
 19 
     | 
    
         
            +
            ENV PATH $PATH:/home/${USER_NAME}/.local/bin/
         
     | 
| 
      
 20 
     | 
    
         
            +
            RUN mkdir /home/${USER_NAME} && chown ${UID}:${GID} /home/${USER_NAME}
         
     | 
| 
      
 21 
     | 
    
         
            +
            RUN apk update --no-cache
         
     | 
| 
      
 22 
     | 
    
         
            +
            RUN apk add --no-cache --virtual py-set python3-dev gcc libc-dev 
         
     | 
| 
      
 23 
     | 
    
         
            +
            RUN apk add --no-cache --virtual Pillow-lib zlib-dev jpeg-dev gcc musl-dev
         
     | 
| 
      
 24 
     | 
    
         
            +
            RUN apk add --no-cache perl-image-exiftool exiftool 
         
     | 
| 
      
 25 
     | 
    
         
            +
            RUN pip3 install click send2trash future requests six tabulate
         
     | 
| 
      
 26 
     | 
    
         
            +
            ```
         
     | 
| 
       10 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
            ```yml
         
     | 
| 
      
 29 
     | 
    
         
            +
            version: '3'
         
     | 
| 
      
 30 
     | 
    
         
            +
            services:
         
     | 
| 
      
 31 
     | 
    
         
            +
              elodie:
         
     | 
| 
      
 32 
     | 
    
         
            +
                build:
         
     | 
| 
      
 33 
     | 
    
         
            +
                  context: .
         
     | 
| 
      
 34 
     | 
    
         
            +
                  dockerfile: Dockerfile.new
         
     | 
| 
      
 35 
     | 
    
         
            +
                  args:
         
     | 
| 
      
 36 
     | 
    
         
            +
                    - USER_NAME=${USER_NAME}
         
     | 
| 
      
 37 
     | 
    
         
            +
                    - UID=${UID}
         
     | 
| 
      
 38 
     | 
    
         
            +
                    - GID=${GID}
         
     | 
| 
      
 39 
     | 
    
         
            +
                user: ${UID}:${GID}
         
     | 
| 
      
 40 
     | 
    
         
            +
                container_name: elodie
         
     | 
| 
      
 41 
     | 
    
         
            +
                working_dir: /home/${USER_NAME}/elodie
         
     | 
| 
      
 42 
     | 
    
         
            +
                volumes:
         
     | 
| 
      
 43 
     | 
    
         
            +
                  - /etc/group:/etc/group:ro
         
     | 
| 
      
 44 
     | 
    
         
            +
                  - /etc/passwd:/etc/passwd:ro
         
     | 
| 
      
 45 
     | 
    
         
            +
                  - ./:/home/${USER_NAME}/elodie
         
     | 
| 
      
 46 
     | 
    
         
            +
                tty: true
         
     | 
| 
      
 47 
     | 
    
         
            +
            ```
         
     | 
| 
      
 48 
     | 
    
         
            +
            入ったら```/home/${USER_NAME}/elodie```がカレントディレクトリでそこに上記のプロジェクトフォルダがマウントされてます。
         
     | 
| 
      
 49 
     | 
    
         
            +
            まずは```./elodie.py```でそのまま実行してみます。以下のような出力が表示されます。
         
     | 
| 
      
 50 
     | 
    
         
            +
            ```txt
         
     | 
| 
      
 51 
     | 
    
         
            +
            Usage: elodie.py [OPTIONS] COMMAND [ARGS]...
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
            Options:
         
     | 
| 
      
 54 
     | 
    
         
            +
              --help  Show this message and exit.
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
            Commands:
         
     | 
| 
      
 57 
     | 
    
         
            +
              batch        Run batch() for all plugins.
         
     | 
| 
      
 58 
     | 
    
         
            +
              generate-db  Regenerate the hash.json database which contains all of...
         
     | 
| 
      
 59 
     | 
    
         
            +
              import       Import files or directories by reading their EXIF and...
         
     | 
| 
      
 60 
     | 
    
         
            +
              update       Update a file's EXIF.
         
     | 
| 
      
 61 
     | 
    
         
            +
              verify
         
     | 
| 
      
 62 
     | 
    
         
            +
            ```
         
     | 
| 
      
 63 
     | 
    
         
            +
            次に```pip3 install -v ./```でインストールします。```/home/$HOME/.local/bin/elodie```にインストールされパスが通った状態になるので```elodie```と入力し実行します。すると下記のようなエラーを出力します。
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ```txt
         
     | 
| 
      
 66 
     | 
    
         
            +
            Traceback (most recent call last):
         
     | 
| 
      
 67 
     | 
    
         
            +
              File "/home/username/.local/bin//elodie", line 5, in <module>
         
     | 
| 
      
 68 
     | 
    
         
            +
                from elodie import entrypoint
         
     | 
| 
      
 69 
     | 
    
         
            +
              File "/home/username/.local/bin/elodie.py", line 14, in <module>
         
     | 
| 
      
 70 
     | 
    
         
            +
                from elodie.dependencies import verify_dependencies
         
     | 
| 
      
 71 
     | 
    
         
            +
            ModuleNotFoundError: No module named 'elodie.dependencies'; 'elodie' is not a package
         
     | 
| 
      
 72 
     | 
    
         
            +
            ```
         
     | 
| 
      
 73 
     | 
    
         
            +
            elodieフォルダ配下のプログラムが一緒にインストールされなかったからだと思います。
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
            ## 作成したsetup.cfgとsetup.py
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
       11 
77 
     | 
    
         
             
            ```python
         
     | 
| 
       12 
78 
     | 
    
         
             
            #!/usr/bin/env python3
         
     | 
| 
       13 
79 
     | 
    
         
             
            from setuptools import setup
         
     | 
| 
         @@ -82,11 +148,3 @@ 
     | 
|
| 
       82 
148 
     | 
    
         
             
            +
         
     | 
| 
       83 
149 
     | 
    
         
             
            ```
         
     | 
| 
       84 
150 
     | 
    
         | 
| 
       85 
     | 
    
         
            -
            ### 私の環境のディレクトリ構造
         
     | 
| 
       86 
     | 
    
         
            -
            ```txt
         
     | 
| 
       87 
     | 
    
         
            -
            # プロジェクトルートの中身
         
     | 
| 
       88 
     | 
    
         
            -
            Dockerfile      Readme.md  config.ini-sample  docker-compose.yml  elodie.egg-info  package.json      setup.py
         
     | 
| 
       89 
     | 
    
         
            -
            Dockerfile.new  app        configs            docs                elodie.py        requirements.txt
         
     | 
| 
       90 
     | 
    
         
            -
            LICENSE         build      creative           elodie              elodie.spec      setup.cfg
         
     | 
| 
       91 
     | 
    
         
            -
            ```
         
     | 
| 
       92 
     | 
    
         
            -
             
     | 
1
test環境の記述が間違ってたので削除
    
        title	
    CHANGED
    
    | 
         
            File without changes
         
     | 
    
        body	
    CHANGED
    
    | 
         @@ -90,38 +90,3 @@ 
     | 
|
| 
       90 
90 
     | 
    
         
             
            LICENSE         build      creative           elodie              elodie.spec      setup.cfg
         
     | 
| 
       91 
91 
     | 
    
         
             
            ```
         
     | 
| 
       92 
92 
     | 
    
         | 
| 
       93 
     | 
    
         
            -
            ### テスト環境
         
     | 
| 
       94 
     | 
    
         
            -
            ```dockerfile
         
     | 
| 
       95 
     | 
    
         
            -
            FROM python:3.10.5-alpine3.16
         
     | 
| 
       96 
     | 
    
         
            -
            ARG USER_NAME
         
     | 
| 
       97 
     | 
    
         
            -
            ARG UID
         
     | 
| 
       98 
     | 
    
         
            -
            ARG GID
         
     | 
| 
       99 
     | 
    
         
            -
            ENV PATH $PATH:/home/${USER_NAME}/.local/bin/
         
     | 
| 
       100 
     | 
    
         
            -
            RUN mkdir /home/${USER_NAME} && chown ${UID}:${GID} /home/${USER_NAME}
         
     | 
| 
       101 
     | 
    
         
            -
            RUN apk update --no-cache
         
     | 
| 
       102 
     | 
    
         
            -
            RUN apk add --no-cache --virtual py-set python3-dev gcc libc-dev 
         
     | 
| 
       103 
     | 
    
         
            -
            RUN apk add --no-cache --virtual Pillow-lib zlib-dev jpeg-dev gcc musl-dev
         
     | 
| 
       104 
     | 
    
         
            -
            RUN apk add --no-cache perl-image-exiftool
         
     | 
| 
       105 
     | 
    
         
            -
            ```
         
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
            ```yml
         
     | 
| 
       108 
     | 
    
         
            -
            version: '3'
         
     | 
| 
       109 
     | 
    
         
            -
            services:
         
     | 
| 
       110 
     | 
    
         
            -
              elodie:
         
     | 
| 
       111 
     | 
    
         
            -
                build:
         
     | 
| 
       112 
     | 
    
         
            -
                  context: .
         
     | 
| 
       113 
     | 
    
         
            -
                  dockerfile: Dockerfile.new
         
     | 
| 
       114 
     | 
    
         
            -
                  args:
         
     | 
| 
       115 
     | 
    
         
            -
                    - USER_NAME=${USER_NAME}
         
     | 
| 
       116 
     | 
    
         
            -
                    - UID=${UID}
         
     | 
| 
       117 
     | 
    
         
            -
                    - GID=${GID}
         
     | 
| 
       118 
     | 
    
         
            -
                user: ${UID}:${GID}
         
     | 
| 
       119 
     | 
    
         
            -
                container_name: elodie
         
     | 
| 
       120 
     | 
    
         
            -
                working_dir: /home/${USER_NAME}/elodie
         
     | 
| 
       121 
     | 
    
         
            -
                volumes:
         
     | 
| 
       122 
     | 
    
         
            -
                  - /etc/group:/etc/group:ro
         
     | 
| 
       123 
     | 
    
         
            -
                  - /etc/passwd:/etc/passwd:ro
         
     | 
| 
       124 
     | 
    
         
            -
                  - ./:/home/${USER_NAME}/elodie
         
     | 
| 
       125 
     | 
    
         
            -
                tty: true
         
     | 
| 
       126 
     | 
    
         
            -
            ```
         
     | 
| 
       127 
     | 
    
         
            -
             
     |