是否可以在setup.py
中指定(可编辑的)已知驻留在本地文件系统上的源依赖项?
考虑以下目录结构,所有目录结构都位于单个VCS存储库中:
projects
utils
setup.py
...
app1
setup.py
... # app1 files depend on ../utils
app2
setup.py
... # app2 files depend on ../utils
给出以下命令:
cd projects
mkvirtualenv app1
pip install -e app1
我想安装app1的所有依赖项,包括“utils”,这是一个“可编辑”的依赖项。同样,如果我为app2做了同样的事情。
我尝试使用file://...
和install_requires
中dependency_links
个网址的所有不同组合进行播放无效。我想使用像src+file://../utils
这样的依赖链接URL,它会告诉setuptools包的源是在这个相对路径的文件系统上。有没有办法做到这一点?
答案 0 :(得分:4)
我有一个相同的问题,我需要依赖兄弟文件夹中的模块。在遇到https://caremad.io/2013/07/setup-vs-requirement/
后,我找到了一个解决方案我最终使用requirements.txt来专门引用我想要的文件,然后使用
安装所有内容pip install -r requirements.txt
<强> requirements.txt 强>
-e ../utils
-e .
setup.py包含所有其他依赖项,包括utils。当pip尝试自己安装app1时,它会意识到utils依赖项已经被填充,因此在安装其他需求时会将其传递给它。
答案 1 :(得分:0)
当我想使用一组相互关联的项目时,我会使用/setup.py develop
安装所有项目。
如果我错误地或稍后我想要一个pip安装的模块可编辑,我克隆源,并在其上做python setup.py develop
,替换现有的。
为了确保,我删除了virtualenv网站包中的引用和包本身。
答案 2 :(得分:0)
我设法通过以下方式在setup.py中提供了相对本地依赖项:
# Uncomment the next line to define a global platform for your project
platform :ios, '11.0'
require_relative '../node_modules/react-native/scripts/react_native_pods'
target 'Example' do
# Comment the next line if you don't want to use dynamic frameworks
#use_frameworks!
# Pods for Example
# pod 'React', :path => '../node_modules/react-native'
pod 'RNSound', :path => '../node_modules/react-native-sound'
pod 'RNCAsyncStorage', :path => '../node_modules/@react-native-community/async-storage'
pod 'RNCMaskedView', :path => '../node_modules/@react-native-community/masked-view'
pod 'RNCPushNotificationIOS', :path => '../node_modules/@react-native-community/push-notification-ios'
pod 'react-native-slider', :path => '../node_modules/@react-native-community/slider'
pod 'RNFBApp', :path => '../node_modules/@react-native-firebase/app'
pod 'RNFBAuth', :path => '../node_modules/@react-native-firebase/auth'
pod 'RNFBMessaging', :path => '../node_modules/@react-native-firebase/messaging'
pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'
pod 'RNGestureHandler', :path => '../node_modules/react-native-gesture-handler'
pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'
pod 'react-native-safe-area-context', :path => '../node_modules/react-native-safe-area-context'
pod 'RNScreens', :path => '../node_modules/react-native-screens'
pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
target 'Example-tvOSTests' do
inherit! :search_paths
# Pods for testing
end
target 'ExampleTests' do
inherit! :search_paths
# Pods for testing
end
end
target 'Example-tvOS' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!
# Pods for Example-tvOS
end
但是也许有人知道更好的解决方法