[Python/PIP] pip proxy 관련 에러
공부2019. 11. 23. 10:20
ERROR: Exception:
Traceback (most recent call last):
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\cli\base_command.py", line 188, in main
status = self.run(options, args)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\commands\install.py", line 345, in run
resolver.resolve(requirement_set)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\legacy_resolve.py", line 196, in resolve
self._resolve_one(requirement_set, req)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\legacy_resolve.py", line 359, in _resolve_one
abstract_dist = self._get_abstract_dist_for(req_to_install)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\legacy_resolve.py", line 307, in _get_abstract_dist_for
self.require_hashes
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\operations\prepare.py", line 134, in prepare_linked_requirement
req.populate_link(finder, upgrade_allowed, require_hashes)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\req\req_install.py", line 211, in populate_link
self.link = finder.find_requirement(self, upgrade)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 1201, in find_requirement
req.name, specifier=req.specifier, hashes=hashes,
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 1183, in find_candidates
candidates = self.find_all_candidates(project_name)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 1128, in find_all_candidates
for page in self._get_pages(url_locations, project_name):
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 1282, in _get_pages
page = _get_html_page(location, session=self.session)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 234, in _get_html_page
resp = _get_html_response(url, session=session)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\index.py", line 182, in _get_html_response
"Cache-Control": "max-age=0",
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_internal\download.py", line 624, in request
return super(PipSession, self).request(method, url, *args, **kwargs)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\sessions.py", line 524, in request
prep.url, proxies, stream, verify, cert
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\sessions.py", line 700, in merge_environment_settings
env_proxies = get_environ_proxies(url, no_proxy=no_proxy)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\utils.py", line 761, in get_environ_proxies
if should_bypass_proxies(url, no_proxy=no_proxy):
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\utils.py", line 745, in should_bypass_proxies
bypass = proxy_bypass(parsed.hostname)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\utils.py", line 95, in proxy_bypass
return proxy_bypass_registry(host)
File "c:\users\fezsi\scoop\apps\python27\current\lib\site-packages\pip\_vendor\requests\utils.py", line 61, in proxy_bypass_registry
'ProxyEnable')[0])
ValueError: invalid literal for int() with base 10: ''
일단 내가 받은 에러 메시지는 이렇다
프록시 쪽을 건든 기억이 있긴 한데 워낙 오래전 일이라 잘 기억 나지 않는다
그래서 ssl 관련 에러인 줄 알았다
단순하게 해결하는 방법은 그냥 pip 코드에서 프록시 설정 체크를 안 하도록 하면 된다.
다음과 같은 디렉토리/패스로 이동하자
> cd ...python-path/lib/site-packages/pip/_vendor/requests
이제 adapters.py를 열고 proxy = select_proxy를 검색한다. get_connection 함수에 있다.
해당 라인을 proxy = False로 변경한다.
이제 pip 사용하면 정상 작동 한다.
끝
[SwiftUI] ObservableObject 뷰 업데이트
공부/Swift/Objective-C2019. 11. 21. 14:33
일반적으로 사용자 액션 없이 데이터 수정을 해도 뷰에 바로 반영이 안 되기 때문에 다음과 같이 해야 한다.
class DataModel : ObservableObject {
@Published public var state: Int
init(_ data: Int) {
self.state = data
}
}
struct ContentView: View {
@ObservedObject var data: DataModel
var body: some View {
HStack {
Text("\(self.data.state)")
}
}
}
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
let dataModel = DataModel(0)
let contentView = ContentView(data: dataModel)
DispatchQueue.global().async {
while true {
DispatchQueue.main.async { // 업데이트는 꼭 메인 스레드에서 해야 합니다.
contentView.data.objectWillChange.send() // 먼저 실행
}
_ = PseudoUpdater.refresh(dataModel) // pseudo: 업데이트 코드 실행
usleep(500_000)
}
}
if let windowScene = scene as? UIWindowScene {
let window = UIWindow(windowScene: windowScene)
window.rootViewController = UIHostingController(rootView: contentView)
self.window = window
window.makeKeyAndVisible()
}
// ...
}
이렇게 하면 다음과 같은 결과를 얻는다
- 씬을 초기화 할 때 DataModel의 state 프로퍼티를 0으로 초기화해 생성한다.
- 컨텐트 뷰를 미리 생성한 DataModel과 함께 생성한다.
- DispatchQueue를 이용해 글로벌 스레드에서 비동기 작업으로 다음과 같은 작업을 무한 반복한다.
- 메인 스레드에서 contentView의 data에 데이터가 바뀐다는 신호를 보낸다.
- 의사코드: dataModel에 대한 업데이트 작업을 진행한다.
- 0.5초 대기한다.
- 기본 씬 생성 코드...
이렇게 하면 외부 코드(여기서는 PseudoUpdater의 refresh 메서드)에 따라서 dataModel 내의 데이터가 변경될 것이고 이에 우리는 변경될 것이라는 것을 SwiftUI에 알려줬으니 수치가 변경 되면 알아서 반영해줄 것이다.
p.s. 별 거 아닌데 내 조잡한 영어 실력으로 구글링 하면 죄다 BindableObject 같은 말도 안 되는 Deprecated 된 예시만 들어서 몇 시간 꼴았다. 갈 곳 잃은 분노를 식히고 하루 지나서야 포스트 작성.
'공부 > Swift/Objective-C' 카테고리의 다른 글
[Xcode] Xcode 구버전 다운 받기 (0) | 2015.02.19 |
---|---|
Section02. Project in iOS - 첫 앱 만들기 - iAlgebra 계산기 (2) (0) | 2014.08.23 |
Section02. Project in iOS - 첫 앱 만들기 - iAlgebra 계산기 (1) (0) | 2014.08.23 |
Section01. Project in iOS - Xcode5로 시작하기 (0) | 2014.08.22 |
Programing in Objective-C 2.0의 149p 연습문제가 너무 어렵다. (0) | 2014.03.14 |