質問編集履歴

2

プロジェクトの構造とどうやって実行しているかの記述を追加。正常に動いた場合の出力結果とpip3 installされたやつを実行して失敗したときの出力結果を追加

2022/09/13 16:09

投稿

chekke1999
chekke1999

スコア21

test CHANGED
File without changes
test CHANGED
@@ -1,12 +1,78 @@
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
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
+ ```
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
+
9
- ### 作成したsetup.cfgとsetup.py
75
+ ## 作成したsetup.cfgとsetup.py
10
76
 
11
77
  ```python
12
78
  #!/usr/bin/env python3
@@ -82,12 +148,4 @@
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
151
 
93
-

1

test環境の記述が間違ってたので削除

2022/09/12 17:21

投稿

chekke1999
chekke1999

スコア21

test CHANGED
File without changes
test CHANGED
@@ -90,39 +90,4 @@
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
93
 
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
-
128
-