Anaconda / 아나콘다, pip install 안될때, pyqt, pyqtgraph

#아나콘다가 요긴할때

 Python 의 pip install 이 매우 편하긴 하지만, 사내 네트워크에서 제한하거나 PC 보안프로그램이 막는 경우는 더할나위 없이 답답하다. 아무것도 할 수 없으니 말이다. 다소 번거롭지만 이러한 답답함을 해소할 수 있는 해결방법이 있다.

파이썬 개발환경에 대한 리뷰는 여기로
Python / 파이썬 개발환경, 파이참, 아나콘다, 주피터 노트북

 
 
 
 

 
 

#Offline 설치가 답이다

 처음에는 pyqt5 패키지 사용을 위해 아나콘다를 접하게 되었다. pip install 없이도 아나콘다만 다운받아서 설치하면 함께 설치되는 Global package 안에 포함되어 있어, interpreter 설정을 아나콘다로 해주어 해결이 가능했다.
 하지만, Global package 에 존재하지 않는 pyqtgraph 를 사용하려니 도저히 방법을 찾을 수가 없었고 결국 구글링해서 찾아낸 offline 설치로 해결할 수 있었다. 방법은 아래와 같다.

 
 
 
 

1. Anaconda 홈페이지에서 해당 package 의 “.tar.bz2” 파일을 다운
 pyqtgraph 를 예를들면 이렇게 하면 된다. 우선 아래 결로에 들어가서 OS 환경과 Python 버전이 맞는 파일을 다운받으면 된다.

종류가 굉장히 많다

여기서 다운받을 수 있다.
다운받은 파일을 아래 경로에 넣어주면 된다.
C:\Users\user_name\AppData\Local\Continuum\anaconda3\Scripts

 
 
 
 

2. Anaconda prompt 실행 후 offline install 명령
 명령은 다음과 같다.

1
2
3
"""
$ Conda install package_name.tar.bz2 --offline
"""

뭔가 진행되는게 보인다

 
 
 
 

3. Anaconda navigator 로 base 에 포함 되었는지 확인
 Anaconda 를 설치하면 시작메뉴에 추가되는 툴이 하나 있는데, 이 Anaconda navigator 를 통해서 설치된 패키지 확인이 가능하다.

Search 에서 원하는 패키지명을 넣어보자

 
 
 
 

4. Pycharm 의 interpreter 설정에서도 확인
 Pycharm 을 사용하는 경우 File\Settings\Project interpreter 에서 패키지가 포함되었는지 확인이 가능하다.

Pycharm 에서 이렇게 확인 가능

 
 
 
 

5. 테스트 코드 동작시, pyqtgraph 정상동작 확인
 테스트 코드는 다음과 같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import sys

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QHBoxLayout, QLabel, QSizePolicy, QSlider, QSpacerItem, QVBoxLayout, QWidget

import pyqtgraph as pg
import numpy as np

class Slider(QWidget):
def __init__(self, minimum, maximum, parent=None):
super(Slider, self).__init__(parent=parent)
self.verticalLayout = QVBoxLayout(self)
self.label = QLabel(self)
self.verticalLayout.addWidget(self.label)
self.horizontalLayout = QHBoxLayout()
spacerItem = QSpacerItem(0, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem)
self.slider = QSlider(self)
self.slider.setOrientation(Qt.Vertical)
self.horizontalLayout.addWidget(self.slider)
spacerItem1 = QSpacerItem(0, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem1)
self.verticalLayout.addLayout(self.horizontalLayout)
self.resize(self.sizeHint())
self.minimum = minimum
self.maximum = maximum
self.slider.valueChanged.connect(self.setLabelValue)
self.x = None
self.setLabelValue(self.slider.value())

def setLabelValue(self, value):
self.x = self.minimum + (float(value) / (self.slider.maximum() - self.slider.minimum())) * (
self.maximum - self.minimum)
self.label.setText("{0:.4g}".format(self.x))

class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
self.horizontalLayout = QHBoxLayout(self)
self.w1 = Slider(-10, 10)
self.horizontalLayout.addWidget(self.w1)
self.w2 = Slider(-1, 1)
self.horizontalLayout.addWidget(self.w2)
self.w3 = Slider(-10, 10)
self.horizontalLayout.addWidget(self.w3)
self.w4 = Slider(-10, 10)
self.horizontalLayout.addWidget(self.w4)
self.win = pg.GraphicsWindow(title="Basic plotting examples")
self.horizontalLayout.addWidget(self.win)
self.p6 = self.win.addPlot(title="My Plot")
self.curve = self.p6.plot(pen='r')
self.update_plot()
self.w1.slider.valueChanged.connect(self.update_plot)
self.w2.slider.valueChanged.connect(self.update_plot)
self.w3.slider.valueChanged.connect(self.update_plot)
self.w4.slider.valueChanged.connect(self.update_plot)

def update_plot(self):
a = self.w1.x
b = self.w2.x
c = self.w3.x
d = self.w4.x
x = np.linspace(0, 10, 100)
data = a + np.cos(x + c * np.pi / 180) * np.exp(-b * x) * d
self.curve.setData(data)

if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())

이 그래프가 떠야 한다

 
 

#있을수도 있고, 없을수도 있습니다

 어떤 패키지는 .tar.bz2 형식이 지원되지 않거나, 업로드 되어 있지 않은 경우들도 있다. 구글링 했을 때 기억으로 변환해서 하는방법도 있었던것 같지만 이 방법이 가장 확실하게 잘 되는 방법이므로 오늘은 여기까지.


#Reference

 
 

 
Share