我有一个我想组织的python包:
root/
setup.py
package1/
__init__.py
package2/
__init__.py
package3/
__init__.py
我希望setup.py
将package1
,package2
和package3
作为顶级软件包安装到正确的site-packages/
目录中,以便我可以执行
import package1
import package2
import package3
没有问题。也许这需要多个setup.py
个文件?
但最重要的是,我希望最终能够通过执行pip install root
来安装所有三个软件包。我该怎么做呢?最好只有distutils
解决方案,虽然setuptools也可以。
谢谢! URI
答案 0 :(得分:2)
您可以尝试
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class PeopleService {
constructor(private http:HttpClient) { }
fetchPeople(): Observable<Object>{
return this.http.get('/api/kanchiwork/');
//return this.http.get('assets/response.json');
};
}
告诉distutils软件包2和3位于package1内。
完整的setup.py可能如下所示:
packages=['package1', 'package2', 'package3'],
package_dir={
'package2': 'package1',
'package3': 'package1',
},
#!/usr/bin/env python
from distutils.core import setup
setup(name='root',
version='1.0',
description='Root package',
author='Me',
author_email='me@example.org',
url='https://example.org/root',
packages=['package1', 'package2', 'package3'],
package_dir={
'package2': 'package1',
'package3': 'package1',
},
)
将软件包安装到您要查找的结构中,例如
python -m pip install ./root
工作。
作为证明,这是import package1
import package2
import package3
在站点包目录中的样子:
ls package*
这是package1:
__init__.py __pycache__
package2:
__init__.py __pycache__
package3:
__init__.py __pycache__
文件:
root-1.0.dist-info/RECORD
答案 1 :(得分:0)
我觉得让您的开发文件/文件夹结构更接近地代表部署结构更清晰。
这意味着,我将所有三个包放在同一层而不是嵌套它们。
如果您随后希望能够通过其中一个导入所有三个,则可以在单个setup.py文件中设置依赖关系。