質問編集履歴
2
プロジェクトの構造とどうやって実行しているかの記述を追加。正常に動いた場合の出力結果とpip3 installされたやつを実行して失敗したときの出力結果を追加
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
|
-
##
|
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環境の記述が間違ってたので削除
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
|
-
|