| 1 | = 2010-10-29 = |
| 2 | |
| 3 | == Python == |
| 4 | |
| 5 | * 需求:怎麼產生 pip package 的相依關係圖呢? |
| 6 | * 解法:https://pypi.org/project/pipdeptree/ |
| 7 | * 安裝: |
| 8 | {{{sh |
| 9 | ~$ sudo pip3 install pipdeptree |
| 10 | }}} |
| 11 | * 產生相依圖: |
| 12 | {{{ |
| 13 | #!graphviz |
| 14 | digraph { |
| 15 | xlrd [label="xlrd |
| 16 | 1.2.0"] |
| 17 | wrapt [label="wrapt |
| 18 | 1.11.2"] |
| 19 | wheel [label="wheel |
| 20 | 0.33.4"] |
| 21 | Werkzeug [label="Werkzeug |
| 22 | 0.16.0"] |
| 23 | webweb [label="webweb |
| 24 | 0.0.37"] |
| 25 | webweb -> numpy [label=">=1.16.3"] |
| 26 | wcwidth [label="wcwidth |
| 27 | 0.1.7"] |
| 28 | urllib3 [label="urllib3 |
| 29 | 1.25.6"] |
| 30 | "typed-ast" [label="typed-ast |
| 31 | 1.4.0"] |
| 32 | traitlets [label="traitlets |
| 33 | 4.3.3"] |
| 34 | traitlets -> decorator [label=any] |
| 35 | traitlets -> six [label=any] |
| 36 | traitlets -> "ipython-genutils" [label=any] |
| 37 | "text-unidecode" [label="text-unidecode |
| 38 | 1.3"] |
| 39 | SQLAlchemy [label="SQLAlchemy |
| 40 | 1.3.10"] |
| 41 | soupsieve [label="soupsieve |
| 42 | 1.9.4"] |
| 43 | setuptools [label="setuptools |
| 44 | 41.0.1"] |
| 45 | selenium [label="selenium |
| 46 | 3.141.0"] |
| 47 | selenium -> urllib3 [label=any] |
| 48 | "selenium-wire" [label="selenium-wire |
| 49 | 1.0.10"] |
| 50 | "selenium-wire" -> selenium [label=">=3.4.0"] |
| 51 | retrying [label="retrying |
| 52 | 1.3.3"] |
| 53 | retrying -> six [label=">=1.7.0"] |
| 54 | pytz [label="pytz |
| 55 | 2019.3"] |
| 56 | pytimeparse [label="pytimeparse |
| 57 | 1.1.8"] |
| 58 | "python-slugify" [label="python-slugify |
| 59 | 3.0.6"] |
| 60 | "python-slugify" -> "text-unidecode" [label=">=1.3"] |
| 61 | "python-dateutil" [label="python-dateutil |
| 62 | 2.8.0"] |
| 63 | "python-dateutil" -> six [label=">=1.5"] |
| 64 | pyparsing [label="pyparsing |
| 65 | 2.4.2"] |
| 66 | pylint [label="pylint |
| 67 | 2.4.2"] |
| 68 | pylint -> mccabe [label=">=0.6,<0.7"] |
| 69 | pylint -> isort [label=">=4.2.5,<5"] |
| 70 | pylint -> astroid [label=">=2.3.0,<2.4"] |
| 71 | Pygments [label="Pygments |
| 72 | 2.4.2"] |
| 73 | ptyprocess [label="ptyprocess |
| 74 | 0.6.0"] |
| 75 | "prompt-toolkit" [label="prompt-toolkit |
| 76 | 2.0.10"] |
| 77 | "prompt-toolkit" -> wcwidth [label=any] |
| 78 | "prompt-toolkit" -> six [label=">=1.9.0"] |
| 79 | plotly [label="plotly |
| 80 | 4.2.1"] |
| 81 | plotly -> six [label=any] |
| 82 | plotly -> retrying [label=">=1.3.3"] |
| 83 | pipdeptree [label="pipdeptree |
| 84 | 0.13.2"] |
| 85 | pipdeptree -> pip [label=">=6.0.0"] |
| 86 | pip [label="pip |
| 87 | 19.1.1"] |
| 88 | pickleshare [label="pickleshare |
| 89 | 0.7.5"] |
| 90 | pexpect [label="pexpect |
| 91 | 4.7.0"] |
| 92 | pexpect -> ptyprocess [label=">=0.5"] |
| 93 | parso [label="parso |
| 94 | 0.5.1"] |
| 95 | parsedatetime [label="parsedatetime |
| 96 | 2.4"] |
| 97 | parsedatetime -> future [label=any] |
| 98 | pandas [label="pandas |
| 99 | 0.25.2"] |
| 100 | pandas -> numpy [label=">=1.13.3"] |
| 101 | pandas -> "python-dateutil" [label=">=2.6.1"] |
| 102 | pandas -> pytz [label=">=2017.2"] |
| 103 | openpyxl [label="openpyxl |
| 104 | 3.0.0"] |
| 105 | openpyxl -> "et-xmlfile" [label=any] |
| 106 | openpyxl -> jdcal [label=any] |
| 107 | numpy [label="numpy |
| 108 | 1.17.3"] |
| 109 | networkx [label="networkx |
| 110 | 2.4"] |
| 111 | networkx -> decorator [label=">=4.3.0"] |
| 112 | mccabe [label="mccabe |
| 113 | 0.6.1"] |
| 114 | matplotlib [label="matplotlib |
| 115 | 3.1.1"] |
| 116 | matplotlib -> pyparsing [label=">=2.0.1,!=2.1.6,!=2.1.2,!=2.0.4"] |
| 117 | matplotlib -> kiwisolver [label=">=1.0.1"] |
| 118 | matplotlib -> numpy [label=">=1.11"] |
| 119 | matplotlib -> "python-dateutil" [label=">=2.1"] |
| 120 | matplotlib -> cycler [label=">=0.10"] |
| 121 | MarkupSafe [label="MarkupSafe |
| 122 | 1.1.1"] |
| 123 | lxml [label="lxml |
| 124 | 4.4.1"] |
| 125 | leather [label="leather |
| 126 | 0.3.3"] |
| 127 | leather -> six [label=">=1.6.1"] |
| 128 | "lazy-object-proxy" [label="lazy-object-proxy |
| 129 | 1.4.2"] |
| 130 | kiwisolver [label="kiwisolver |
| 131 | 1.1.0"] |
| 132 | kiwisolver -> setuptools [label=any] |
| 133 | Jinja2 [label="Jinja2 |
| 134 | 2.10.3"] |
| 135 | Jinja2 -> MarkupSafe [label=">=0.23"] |
| 136 | jedi [label="jedi |
| 137 | 0.15.1"] |
| 138 | jedi -> parso [label=">=0.5.0"] |
| 139 | jdcal [label="jdcal |
| 140 | 1.4.1"] |
| 141 | itsdangerous [label="itsdangerous |
| 142 | 1.1.0"] |
| 143 | isort [label="isort |
| 144 | 4.3.21"] |
| 145 | isodate [label="isodate |
| 146 | 0.6.0"] |
| 147 | isodate -> six [label=any] |
| 148 | ipython [label="ipython |
| 149 | 7.8.0"] |
| 150 | ipython -> decorator [label=any] |
| 151 | ipython -> pickleshare [label=any] |
| 152 | ipython -> setuptools [label=">=18.5"] |
| 153 | ipython -> pygments [label=any] |
| 154 | ipython -> backcall [label=any] |
| 155 | ipython -> traitlets [label=">=4.2"] |
| 156 | ipython -> pexpect [label=any] |
| 157 | ipython -> jedi [label=">=0.10"] |
| 158 | ipython -> "prompt-toolkit" [label=">=2.0.0,<2.1.0"] |
| 159 | ipython -> appnope [label=any] |
| 160 | "ipython-genutils" [label="ipython-genutils |
| 161 | 0.2.0"] |
| 162 | graphviz [label="graphviz |
| 163 | 0.13"] |
| 164 | future [label="future |
| 165 | 0.18.0"] |
| 166 | Flask [label="Flask |
| 167 | 1.1.1"] |
| 168 | Flask -> itsdangerous [label=">=0.24"] |
| 169 | Flask -> Werkzeug [label=">=0.15"] |
| 170 | Flask -> Jinja2 [label=">=2.10.1"] |
| 171 | Flask -> click [label=">=5.1"] |
| 172 | "Flask-Compress" [label="Flask-Compress |
| 173 | 1.4.0"] |
| 174 | "Flask-Compress" -> Flask [label=any] |
| 175 | "et-xmlfile" [label="et-xmlfile |
| 176 | 1.0.1"] |
| 177 | decorator [label="decorator |
| 178 | 4.4.0"] |
| 179 | dbfread [label="dbfread |
| 180 | 2.0.7"] |
| 181 | dash [label="dash |
| 182 | 1.4.1"] |
| 183 | dash -> "dash-table" [label="==4.4.1"] |
| 184 | dash -> plotly [label=any] |
| 185 | dash -> "flask-compress" [label=any] |
| 186 | dash -> "dash-core-components" [label="==1.3.1"] |
| 187 | dash -> "dash-html-components" [label="==1.0.1"] |
| 188 | dash -> "dash-renderer" [label="==1.1.2"] |
| 189 | dash -> Flask [label=">=1.0.2"] |
| 190 | dash -> future [label=any] |
| 191 | "dash-table" [label="dash-table |
| 192 | 4.4.1"] |
| 193 | "dash-renderer" [label="dash-renderer |
| 194 | 1.1.2"] |
| 195 | "dash-html-components" [label="dash-html-components |
| 196 | 1.0.1"] |
| 197 | "dash-daq" [label="dash-daq |
| 198 | 0.2.1"] |
| 199 | "dash-daq" -> dash [label=">=1.0.0"] |
| 200 | "dash-core-components" [label="dash-core-components |
| 201 | 1.3.1"] |
| 202 | cycler [label="cycler |
| 203 | 0.10.0"] |
| 204 | cycler -> six [label=any] |
| 205 | csvkit [label="csvkit |
| 206 | 1.0.4"] |
| 207 | csvkit -> six [label=">=1.6.1"] |
| 208 | csvkit -> "agate-sql" [label=">=0.5.3"] |
| 209 | csvkit -> "agate-excel" [label=">=0.2.2"] |
| 210 | csvkit -> agate [label=">=1.6.1"] |
| 211 | csvkit -> "agate-dbf" [label=">=0.2.0"] |
| 212 | Click [label="Click |
| 213 | 7.0"] |
| 214 | bs4 [label="bs4 |
| 215 | 0.0.1"] |
| 216 | bs4 -> beautifulsoup4 [label=any] |
| 217 | beautifulsoup4 [label="beautifulsoup4 |
| 218 | 4.8.1"] |
| 219 | beautifulsoup4 -> soupsieve [label=">=1.2"] |
| 220 | backcall [label="backcall |
| 221 | 0.1.0"] |
| 222 | Babel [label="Babel |
| 223 | 2.7.0"] |
| 224 | Babel -> pytz [label=">=2015.7"] |
| 225 | astroid [label="astroid |
| 226 | 2.3.1"] |
| 227 | astroid -> six [label="==1.12"] |
| 228 | astroid -> "lazy-object-proxy" [label="==1.4.*"] |
| 229 | astroid -> "typed-ast" [label=">=1.4.0,<1.5"] |
| 230 | astroid -> wrapt [label="==1.11.*"] |
| 231 | appnope [label="appnope |
| 232 | 0.1.0"] |
| 233 | agate [label="agate |
| 234 | 1.6.1"] |
| 235 | agate -> Babel [label=">=2.0"] |
| 236 | agate -> six [label=">=1.9.0"] |
| 237 | agate -> isodate [label=">=0.5.4"] |
| 238 | agate -> "python-slugify" [label=">=1.2.1"] |
| 239 | agate -> pytimeparse [label=">=1.1.5"] |
| 240 | agate -> parsedatetime [label=">=2.1"] |
| 241 | agate -> leather [label=">=0.3.2"] |
| 242 | "agate-sql" [label="agate-sql |
| 243 | 0.5.4"] |
| 244 | "agate-sql" -> sqlalchemy [label=">=1.0.8"] |
| 245 | "agate-sql" -> agate [label=">=1.5.0"] |
| 246 | "agate-excel" [label="agate-excel |
| 247 | 0.2.3"] |
| 248 | "agate-excel" -> xlrd [label=">=0.9.4"] |
| 249 | "agate-excel" -> openpyxl [label=">=2.3.0"] |
| 250 | "agate-excel" -> agate [label=">=1.5.0"] |
| 251 | "agate-dbf" [label="agate-dbf |
| 252 | 0.2.1"] |
| 253 | "agate-dbf" -> dbfread [label=">=2.0.5"] |
| 254 | "agate-dbf" -> agate [label=">=1.5.0"] |
| 255 | six [label="six |
| 256 | 1.12.0"] |
| 257 | protobuf [label="protobuf |
| 258 | 3.10.0"] |
| 259 | protobuf -> six [label=">=1.9"] |
| 260 | protobuf -> setuptools [label=any] |
| 261 | } |
| 262 | }}} |