Wiki

Version 109 (Etienne Pallier, 03/18/2016 03:48 pm)

1 1 Etienne Pallier
h1. Technical Documentation for the PYROS project (FGFT-CC)
2 1 Etienne Pallier
3 1 Etienne Pallier
4 1 Etienne Pallier
HOWTO Format Redmine Wiki : http://www.redmine.org/projects/redmine/wiki/FrRedmineWikiFormatting
5 1 Etienne Pallier
6 1 Etienne Pallier
{{>toc}}
7 1 Etienne Pallier
8 1 Etienne Pallier
9 1 Etienne Pallier
10 3 Etienne Pallier
---
11 1 Etienne Pallier
12 57 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}TODO%
13 57 Etienne Pallier
14 58 Etienne Pallier
ajouter lien vers pyros.sql
15 57 Etienne Pallier
16 57 Etienne Pallier
---
17 57 Etienne Pallier
18 17 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}I - INSTALLATION%
19 2 Etienne Pallier
20 51 Etienne Pallier
h3. If necessary, install MySql
21 2 Etienne Pallier
22 49 Etienne Pallier
 * Linux Ubuntu
23 49 Etienne Pallier
<pre>
24 107 Paul Carensac
25 107 Paul Carensac
$ sudo apt-get install mysql-server
26 107 Paul Carensac
$ sudo apt-get install mysql-client
27 107 Paul Carensac
28 49 Etienne Pallier
</pre>
29 49 Etienne Pallier
30 49 Etienne Pallier
 * Linux CentOS
31 49 Etienne Pallier
<pre>
32 49 Etienne Pallier
TODO:
33 49 Etienne Pallier
$ sudo yum install mysql
34 49 Etienne Pallier
...
35 49 Etienne Pallier
</pre>
36 49 Etienne Pallier
37 49 Etienne Pallier
 * Mac OS X
38 49 Etienne Pallier
<pre>
39 49 Etienne Pallier
TODO:
40 49 Etienne Pallier
Install XAMPP
41 49 Etienne Pallier
(but you could also use the pre-installed Mac OS MySql)
42 49 Etienne Pallier
</pre>
43 49 Etienne Pallier
44 49 Etienne Pallier
 * Windows
45 49 Etienne Pallier
<pre>
46 49 Etienne Pallier
TODO:
47 49 Etienne Pallier
</pre>
48 49 Etienne Pallier
49 49 Etienne Pallier
50 49 Etienne Pallier
---
51 1 Etienne Pallier
52 6 Etienne Pallier
h3. Create database
53 1 Etienne Pallier
54 52 Etienne Pallier
55 52 Etienne Pallier
 * Linux and Mac OS X:
56 52 Etienne Pallier
<pre>
57 3 Etienne Pallier
One liner:
58 3 Etienne Pallier
$ mysql -u root < pyros.sql
59 1 Etienne Pallier
60 3 Etienne Pallier
Or :
61 3 Etienne Pallier
$ mysql -u root
62 3 Etienne Pallier
mysql> create database pyros;
63 3 Etienne Pallier
mysql> use pyros;
64 3 Etienne Pallier
mysql> source pyros.sql;
65 1 Etienne Pallier
66 3 Etienne Pallier
(
67 3 Etienne Pallier
TODO:
68 3 Etienne Pallier
mysql> grant all on pyros.* to pyros@localhost identified by ‘pyros’;)
69 3 Etienne Pallier
mysql> flush privileges;
70 3 Etienne Pallier
)
71 52 Etienne Pallier
</pre>
72 1 Etienne Pallier
73 53 Etienne Pallier
74 53 Etienne Pallier
 * Windows:
75 52 Etienne Pallier
<pre>
76 52 Etienne Pallier
TODO: Use phpmyadmin ?
77 52 Etienne Pallier
</pre>
78 1 Etienne Pallier
79 1 Etienne Pallier
80 4 Etienne Pallier
---
81 5 Etienne Pallier
82 6 Etienne Pallier
h3. Install python3.5
83 1 Etienne Pallier
84 11 Etienne Pallier
85 11 Etienne Pallier
 * Mac OS X :
86 23 Etienne Pallier
<pre>
87 24 Etienne Pallier
1) Installer MacPort
88 24 Etienne Pallier
(TODO: doc)
89 24 Etienne Pallier
90 24 Etienne Pallier
2) Installer le "port" python35
91 1 Etienne Pallier
$ sudo port install python35
92 1 Etienne Pallier
</pre>
93 1 Etienne Pallier
94 1 Etienne Pallier
 * Linux (Ubuntu) :
95 1 Etienne Pallier
<pre>
96 107 Paul Carensac
sudo add-apt-repository ppa:fkrull/deadsnakes
97 107 Paul Carensac
sudo apt-get update
98 107 Paul Carensac
sudo apt-get install python3.5
99 107 Paul Carensac
100 107 Paul Carensac
sudo pip install virtualenv
101 23 Etienne Pallier
</pre>
102 1 Etienne Pallier
103 5 Etienne Pallier
104 3 Etienne Pallier
105 4 Etienne Pallier
---
106 5 Etienne Pallier
107 13 Etienne Pallier
h3. Create project dir
108 13 Etienne Pallier
109 68 Etienne Pallier
<pre>
110 74 Etienne Pallier
$ mkdir PYROS
111 68 Etienne Pallier
</pre>
112 13 Etienne Pallier
113 13 Etienne Pallier
---
114 59 Etienne Pallier
115 59 Etienne Pallier
h3. Get the project (from git)
116 59 Etienne Pallier
117 78 Etienne Pallier
<pre>
118 59 Etienne Pallier
TODO:
119 79 Etienne Pallier
120 80 Etienne Pallier
$ git ...
121 78 Etienne Pallier
</pre>
122 78 Etienne Pallier
123 59 Etienne Pallier
124 59 Etienne Pallier
125 59 Etienne Pallier
---
126 59 Etienne Pallier
127 60 Etienne Pallier
h3. Create virtualenv with python3.5 dedicated to pyros project (inside the project folder)
128 3 Etienne Pallier
129 75 Etienne Pallier
$ cd PYROS/
130 3 Etienne Pallier
131 3 Etienne Pallier
$ which python3.5
132 3 Etienne Pallier
/opt/local/bin/python3.5
133 3 Etienne Pallier
134 15 Etienne Pallier
$ virtualenv-3.5 venv_py35_pyros -p /opt/local/bin/python3.5
135 3 Etienne Pallier
=> creates a venv_py35_pyros/ folder inside pyros/
136 3 Etienne Pallier
137 1 Etienne Pallier
138 1 Etienne Pallier
139 7 Etienne Pallier
---
140 3 Etienne Pallier
141 65 Etienne Pallier
h3. Activate the python virtual environment (from inside the project)
142 7 Etienne Pallier
143 55 Etienne Pallier
<pre>
144 1 Etienne Pallier
145 65 Etienne Pallier
$ pwd
146 76 Etienne Pallier
.../PYROS
147 1 Etienne Pallier
148 65 Etienne Pallier
$ source ./venv_py35_pyros/bin/activate
149 65 Etienne Pallier
150 3 Etienne Pallier
$ python -V
151 1 Etienne Pallier
Python 3.5.1
152 3 Etienne Pallier
153 3 Etienne Pallier
$ which pip
154 77 Etienne Pallier
.../PYROS/venv_py35_pyros/bin/pip
155 16 Etienne Pallier
156 18 Etienne Pallier
Upgrade pip to last version available :
157 3 Etienne Pallier
$ pip install --upgrade pip
158 3 Etienne Pallier
Collecting pip
159 3 Etienne Pallier
  Downloading pip-8.1.1-py2.py3-none-any.whl (1.2MB)
160 3 Etienne Pallier
Installing collected packages: pip
161 3 Etienne Pallier
  Found existing installation: pip 7.1.2
162 3 Etienne Pallier
    Uninstalling pip-7.1.2:
163 3 Etienne Pallier
      Successfully uninstalled pip-7.1.2
164 1 Etienne Pallier
Successfully installed pip-8.1.1
165 55 Etienne Pallier
166 55 Etienne Pallier
</pre>
167 18 Etienne Pallier
168 27 Etienne Pallier
h3. Install needed python packages (from within the virtual environment)
169 18 Etienne Pallier
170 66 Etienne Pallier
First, be sure that the virtual environment is activated:
171 66 Etienne Pallier
<pre>
172 66 Etienne Pallier
$ python -V
173 66 Etienne Pallier
Python 3.5.1
174 66 Etienne Pallier
</pre>
175 66 Etienne Pallier
176 62 Etienne Pallier
 * *Automatic Installation of all packages*
177 62 Etienne Pallier
<pre>
178 90 Etienne Pallier
$ pip install -r REQUIREMENTS.txt
179 62 Etienne Pallier
</pre>
180 62 Etienne Pallier
181 93 Etienne Pallier
 * *Or, manual installation of each package*
182 62 Etienne Pallier
183 62 Etienne Pallier
  * *Install Django* :
184 32 Etienne Pallier
<pre>
185 3 Etienne Pallier
$ pip install django
186 3 Etienne Pallier
Collecting django
187 3 Etienne Pallier
  Downloading Django-1.9.4-py2.py3-none-any.whl (6.6MB)
188 3 Etienne Pallier
Installing collected packages: django
189 3 Etienne Pallier
Successfully installed django-1.9.4
190 3 Etienne Pallier
191 3 Etienne Pallier
$ pip install django-admin-tools
192 3 Etienne Pallier
Collecting django-admin-tools
193 3 Etienne Pallier
  Downloading django_admin_tools-0.7.2-py2.py3-none-any.whl (289kB)
194 3 Etienne Pallier
Installing collected packages: django-admin-tools
195 3 Etienne Pallier
Successfully installed django-admin-tools-0.7.2
196 3 Etienne Pallier
197 21 Etienne Pallier
$ pip install django-debug-toolbar
198 21 Etienne Pallier
Collecting django-debug-toolbar
199 21 Etienne Pallier
  Downloading django_debug_toolbar-1.4-py2.py3-none-any.whl (212kB)
200 21 Etienne Pallier
Requirement already satisfied (use --upgrade to upgrade): Django>=1.7 in ./venv_py35_pyros/lib/python3.5/site-packages (from django-debug-toolbar)
201 21 Etienne Pallier
Collecting sqlparse (from django-debug-toolbar)
202 21 Etienne Pallier
  Downloading sqlparse-0.1.19.tar.gz (58kB)
203 21 Etienne Pallier
Building wheels for collected packages: sqlparse
204 21 Etienne Pallier
  Running setup.py bdist_wheel for sqlparse ... done
205 21 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/7b/d4/72/6011bb100dd5fc213164e4bbee13d4e03261dd54ce6a5de6b8
206 21 Etienne Pallier
Successfully built sqlparse
207 21 Etienne Pallier
Installing collected packages: sqlparse, django-debug-toolbar
208 21 Etienne Pallier
Successfully installed django-debug-toolbar-1.4 sqlparse-0.1.19
209 21 Etienne Pallier
210 21 Etienne Pallier
$ pip install django-extensions
211 21 Etienne Pallier
Collecting django-extensions
212 21 Etienne Pallier
  Downloading django_extensions-1.6.1-py2.py3-none-any.whl (202kB)
213 21 Etienne Pallier
Collecting six>=1.2 (from django-extensions)
214 21 Etienne Pallier
  Downloading six-1.10.0-py2.py3-none-any.whl
215 21 Etienne Pallier
Installing collected packages: six, django-extensions
216 21 Etienne Pallier
Successfully installed django-extensions-1.6.1 six-1.10.0
217 21 Etienne Pallier
218 21 Etienne Pallier
$ pip install django-suit
219 21 Etienne Pallier
Collecting django-suit
220 21 Etienne Pallier
  Downloading django-suit-0.2.18.tar.gz (587kB)
221 21 Etienne Pallier
Building wheels for collected packages: django-suit
222 1 Etienne Pallier
  Running setup.py bdist_wheel for django-suit ... done
223 1 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/12/8b/9a/e02ab0ad9229881638aa040d47d77c8f562999533811927d41
224 1 Etienne Pallier
Successfully built django-suit
225 1 Etienne Pallier
Installing collected packages: django-suit
226 1 Etienne Pallier
Successfully installed django-suit-0.2.18
227 21 Etienne Pallier
228 32 Etienne Pallier
</pre>
229 32 Etienne Pallier
230 63 Etienne Pallier
  * *Install the web application server gunicorn (will be used in production instead of the dev django web server)* :
231 32 Etienne Pallier
<pre>
232 25 Etienne Pallier
$ pip install gunicorn
233 25 Etienne Pallier
Collecting gunicorn
234 25 Etienne Pallier
  Downloading gunicorn-19.4.5-py2.py3-none-any.whl (112kB)
235 21 Etienne Pallier
Installing collected packages: gunicorn
236 26 Etienne Pallier
Successfully installed gunicorn-19.4.5
237 1 Etienne Pallier
</pre>
238 1 Etienne Pallier
239 63 Etienne Pallier
  * *Install the python mysql client*:
240 32 Etienne Pallier
<pre>
241 32 Etienne Pallier
$ pip install mysqlclient
242 72 Etienne Pallier
...
243 72 Etienne Pallier
</pre>
244 33 Etienne Pallier
245 73 Etienne Pallier
   * => Issue under Mac OS X:
246 72 Etienne Pallier
<pre>
247 3 Etienne Pallier
$ pip install mysqlclient
248 3 Etienne Pallier
Collecting mysqlclient
249 1 Etienne Pallier
  Downloading mysqlclient-1.3.7.tar.gz (79kB)
250 22 Etienne Pallier
Building wheels for collected packages: mysqlclient
251 3 Etienne Pallier
  Running setup.py bdist_wheel for mysqlclient ... error
252 3 Etienne Pallier
253 1 Etienne Pallier
  ----------------------------------------
254 1 Etienne Pallier
  Failed building wheel for mysqlclient
255 1 Etienne Pallier
  Running setup.py clean for mysqlclient
256 1 Etienne Pallier
Failed to build mysqlclient
257 1 Etienne Pallier
Installing collected packages: mysqlclient
258 1 Etienne Pallier
  Running setup.py install for mysqlclient ... done
259 1 Etienne Pallier
Successfully installed mysqlclient-1.3.7
260 1 Etienne Pallier
261 1 Etienne Pallier
BOUH !!!
262 1 Etienne Pallier
263 1 Etienne Pallier
$ pip install --upgrade wheel
264 1 Etienne Pallier
Collecting wheel
265 1 Etienne Pallier
  Downloading wheel-0.29.0-py2.py3-none-any.whl (66kB)
266 1 Etienne Pallier
Installing collected packages: wheel
267 1 Etienne Pallier
  Found existing installation: wheel 0.24.0
268 1 Etienne Pallier
    Uninstalling wheel-0.24.0:
269 1 Etienne Pallier
      Successfully uninstalled wheel-0.24.0
270 1 Etienne Pallier
Successfully installed wheel-0.29.0
271 1 Etienne Pallier
272 1 Etienne Pallier
$ pip uninstall mysqlclient
273 1 Etienne Pallier
274 1 Etienne Pallier
$ pip install mysqlclient
275 1 Etienne Pallier
Collecting mysqlclient
276 1 Etienne Pallier
  Using cached mysqlclient-1.3.7.tar.gz
277 1 Etienne Pallier
Building wheels for collected packages: mysqlclient
278 1 Etienne Pallier
  Running setup.py bdist_wheel for mysqlclient ... done
279 1 Etienne Pallier
  Stored in directory: /Users/epallier/Library/Caches/pip/wheels/9b/06/50/d11418c26cf8f2156b13d4363b5afde8e7e75ebb8540d0228d
280 1 Etienne Pallier
Successfully built mysqlclient
281 1 Etienne Pallier
Installing collected packages: mysqlclient
282 1 Etienne Pallier
Successfully installed mysqlclient-1.3.7
283 1 Etienne Pallier
284 1 Etienne Pallier
YES !!!
285 1 Etienne Pallier
286 1 Etienne Pallier
</pre>
287 1 Etienne Pallier
288 107 Paul Carensac
   * => Issues under Ubuntu:
289 107 Paul Carensac
<pre>
290 107 Paul Carensac
$ pip install mysqlclient
291 107 Paul Carensac
Collecting mysqlclient
292 107 Paul Carensac
  Downloading mysqlclient-1.3.7.tar.gz (79kB)
293 107 Paul Carensac
    100% |████████████████████████████████| 81kB 1.5MB/s
294 107 Paul Carensac
    Complete output from command python setup.py egg_info:
295 107 Paul Carensac
    /bin/sh: 1: mysql_config: not found
296 107 Paul Carensac
    Traceback (most recent call last):
297 107 Paul Carensac
      File "<string>", line 1, in <module>
298 107 Paul Carensac
    [...]
299 107 Paul Carensac
    ----------------------------------------
300 107 Paul Carensac
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-q6j4inuz/mysqlclient/
301 1 Etienne Pallier
302 108 Paul Carensac
BOUH !!!
303 108 Paul Carensac
304 107 Paul Carensac
$ sudo apt-get install libmysqlclient-dev
305 108 Paul Carensac
306 107 Paul Carensac
$ pip install mysqlclient
307 107 Paul Carensac
Collecting mysqlclient
308 107 Paul Carensac
  Using cached mysqlclient-1.3.7.tar.gz
309 107 Paul Carensac
Building wheels for collected packages: mysqlclient
310 107 Paul Carensac
  Running setup.py bdist_wheel for mysqlclient ... error
311 107 Paul Carensac
312 107 Paul Carensac
    _mysql.c:40:20: fatal error: Python.h: No such file or directory
313 107 Paul Carensac
     #include "Python.h"
314 107 Paul Carensac
                        ^
315 107 Paul Carensac
    compilation terminated.
316 107 Paul Carensac
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
317 107 Paul Carensac
    
318 107 Paul Carensac
    ----------------------------------------
319 107 Paul Carensac
Command "/home/carens_p/pyros/venv_py35_pyros/bin/python3.5 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-k3klv92j/mysqlclient/setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-gz242xxs-record/install-record.txt --single-version-externally-managed --compile --install-headers /home/carens_p/pyros/venv_py35_pyros/include/site/python3.5/mysqlclient" failed with error code 1 in /tmp/pip-build-k3klv92j/mysqlclient/
320 107 Paul Carensac
321 108 Paul Carensac
BOUH !!!
322 108 Paul Carensac
323 107 Paul Carensac
$ sudo apt-get install python3.5-dev
324 108 Paul Carensac
325 107 Paul Carensac
$ pip install mysqlclient
326 107 Paul Carensac
327 107 Paul Carensac
YES !!!
328 107 Paul Carensac
329 107 Paul Carensac
</pre>
330 12 Etienne Pallier
331 82 Etienne Pallier
 * *Set Requirements*
332 82 Etienne Pallier
333 82 Etienne Pallier
<pre>
334 82 Etienne Pallier
$ pip freeze > REQUIREMENTS.txt
335 82 Etienne Pallier
</pre>
336 12 Etienne Pallier
337 12 Etienne Pallier
---
338 28 Etienne Pallier
339 12 Etienne Pallier
h3. Project organization
340 29 Etienne Pallier
 
341 1 Etienne Pallier
Example of a good organization :
342 29 Etienne Pallier
343 29 Etienne Pallier
1 project = N applis
344 30 Etienne Pallier
(but 1 appli can be part of many projects)
345 12 Etienne Pallier
(then 1 appli = N models)
346 31 Etienne Pallier
347 34 Etienne Pallier
<pre>
348 29 Etienne Pallier
349 34 Etienne Pallier
MYPROJECT/
350 50 Etienne Pallier
351 1 Etienne Pallier
352 1 Etienne Pallier
	src/
353 34 Etienne Pallier
		myproject/
354 34 Etienne Pallier
		appli1/
355 12 Etienne Pallier
		appli2/
356 34 Etienne Pallier
357 34 Etienne Pallier
		appliN/
358 12 Etienne Pallier
359 34 Etienne Pallier
	public/
360 34 Etienne Pallier
		static/
361 12 Etienne Pallier
362 1 Etienne Pallier
	private/
363 89 Etienne Pallier
		REQUIREMENTS.txt
364 50 Etienne Pallier
365 50 Etienne Pallier
	venv_py35_pyros/
366 1 Etienne Pallier
367 1 Etienne Pallier
</pre>
368 1 Etienne Pallier
369 37 Etienne Pallier
370 37 Etienne Pallier
Set needed folders:
371 37 Etienne Pallier
<pre>
372 81 Etienne Pallier
$ cd PYROS/
373 12 Etienne Pallier
$ mkdir private public
374 37 Etienne Pallier
$ mkdir public/static
375 3 Etienne Pallier
</pre>
376 7 Etienne Pallier
377 3 Etienne Pallier
---
378 39 Etienne Pallier
379 7 Etienne Pallier
h3. Create Django project pyros
380 38 Etienne Pallier
381 38 Etienne Pallier
<pre>
382 1 Etienne Pallier
383 83 Etienne Pallier
From inside the project:
384 83 Etienne Pallier
$ pwd
385 83 Etienne Pallier
.../PYROS/
386 83 Etienne Pallier
387 1 Etienne Pallier
$ django-admin startproject pyros
388 1 Etienne Pallier
389 84 Etienne Pallier
$ mv pyros src
390 84 Etienne Pallier
391 86 Etienne Pallier
$ mv REQUIREMENTS.txt private/
392 1 Etienne Pallier
393 86 Etienne Pallier
We have then this architecture:
394 86 Etienne Pallier
395 1 Etienne Pallier
PYROS
396 83 Etienne Pallier
├── private
397 86 Etienne Pallier
│   └── REQUIREMENTS.txt
398 83 Etienne Pallier
├── public
399 83 Etienne Pallier
│   └── static
400 83 Etienne Pallier
├── src
401 83 Etienne Pallier
│   ├── db.sqlite3
402 83 Etienne Pallier
│   ├── manage.py
403 1 Etienne Pallier
│   ├── pyros
404 84 Etienne Pallier
│   │   ├── __init__.py
405 84 Etienne Pallier
│   │   ├── settings.py
406 84 Etienne Pallier
│   │   ├── urls.py
407 84 Etienne Pallier
│   │   └── wsgi.py
408 85 Etienne Pallier
└── venv_py35_pyros
409 3 Etienne Pallier
410 3 Etienne Pallier
411 3 Etienne Pallier
$ cd src/
412 40 Etienne Pallier
413 1 Etienne Pallier
$ ./manage.py runserver
414 38 Etienne Pallier
(or gunicorn pyros.wsgi)
415 3 Etienne Pallier
==> http://localhost:8000
416 87 Etienne Pallier
...
417 87 Etienne Pallier
...
418 87 Etienne Pallier
Ctrl-c
419 87 Etienne Pallier
420 3 Etienne Pallier
</pre>
421 7 Etienne Pallier
422 3 Etienne Pallier
423 42 Etienne Pallier
---
424 7 Etienne Pallier
425 3 Etienne Pallier
h3. Set Database engine as MySql
426 3 Etienne Pallier
427 41 Etienne Pallier
Edit src/pyros/settings.py
428 3 Etienne Pallier
429 3 Etienne Pallier
<pre>
430 3 Etienne Pallier
DATABASES = {
431 1 Etienne Pallier
    'default': {
432 3 Etienne Pallier
        'ENGINE': 'django.db.backends.mysql',
433 1 Etienne Pallier
        'NAME': 'pyros',
434 1 Etienne Pallier
        'USER': 'root',
435 1 Etienne Pallier
        'PASSWORD': ''
436 41 Etienne Pallier
    }
437 3 Etienne Pallier
}
438 7 Etienne Pallier
</pre>
439 3 Etienne Pallier
440 43 Etienne Pallier
---
441 7 Etienne Pallier
442 43 Etienne Pallier
h3. Import database into Django (with inspectdb)
443 3 Etienne Pallier
444 101 Etienne Pallier
From src/ :
445 94 Etienne Pallier
446 3 Etienne Pallier
<pre>
447 44 Etienne Pallier
$ ./manage.py inspectdb > models.py
448 94 Etienne Pallier
</pre>
449 44 Etienne Pallier
450 97 Etienne Pallier
Issue on Mac OS X:
451 3 Etienne Pallier
<pre>
452 3 Etienne Pallier
Traceback (most recent call last):
453 3 Etienne Pallier
  File "/Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 25, in <module>
454 3 Etienne Pallier
    import MySQLdb as Database
455 3 Etienne Pallier
  File "/Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/MySQLdb/__init__.py", line 19, in <module>
456 3 Etienne Pallier
    import _mysql
457 3 Etienne Pallier
ImportError: dlopen(/Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
458 3 Etienne Pallier
  Referenced from: /Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so
459 3 Etienne Pallier
  Reason: image not found
460 3 Etienne Pallier
461 3 Etienne Pallier
=> BOUH !!!
462 3 Etienne Pallier
463 3 Etienne Pallier
LA SOLUTION EST ICI : http://stackoverflow.com/questions/6383310/python-mysqldb-library-not-loaded-libmysqlclient-18-dylib
464 3 Etienne Pallier
465 3 Etienne Pallier
(
466 3 Etienne Pallier
Apparemment, ceci aurait dû suffire:
467 3 Etienne Pallier
mkdir -p /usr/local/lib   
468 3 Etienne Pallier
ln -s /usr/local/mysql/lib/libmysql* /usr/local/lib
469 3 Etienne Pallier
)
470 3 Etienne Pallier
471 3 Etienne Pallier
Mais j’ai fait ceci:
472 3 Etienne Pallier
473 1 Etienne Pallier
$ otool -L /Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so
474 10 Etienne Pallier
/Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so:
475 3 Etienne Pallier
	libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
476 3 Etienne Pallier
...
477 3 Etienne Pallier
478 1 Etienne Pallier
$ locate libmysqlclient.18.dylib
479 1 Etienne Pallier
/Applications/XAMPP/xamppfiles/lib/libmysqlclient.18.dylib
480 1 Etienne Pallier
/Library/SystemMigration/History/Migration-68137DFB-CB6A-4FBB-81E2-11BDB5D01E48/QuarantineRoot/usr/lib/libmysqlclient.18.dylib
481 1 Etienne Pallier
482 10 Etienne Pallier
$ sudo install_name_tool -change libmysqlclient.18.dylib /Applications/XAMPP/xamppfiles/lib/libmysqlclient.18.dylib /Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so
483 10 Etienne Pallier
484 10 Etienne Pallier
$ otool -L /Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so
485 10 Etienne Pallier
/Users/epallier/Documents/_W_more/PROJECTS/GFT/SOFT/PYROS/pyros/venv_py35_pyros/lib/python3.5/site-packages/_mysql.cpython-35m-darwin.so:
486 3 Etienne Pallier
	/Applications/XAMPP/xamppfiles/lib/libmysqlclient.18.dylib (compatibility version 18.0.0, current version 18.0.0)
487 1 Etienne Pallier
...
488 1 Etienne Pallier
489 3 Etienne Pallier
$ ./manage.py inspectdb > models.py
490 44 Etienne Pallier
491 3 Etienne Pallier
=> YES !!!
492 3 Etienne Pallier
</pre>
493 7 Etienne Pallier
494 3 Etienne Pallier
495 48 Etienne Pallier
---
496 7 Etienne Pallier
497 3 Etienne Pallier
h3. Create a Django application pyrosapp
498 3 Etienne Pallier
499 102 Etienne Pallier
From src/ :
500 98 Etienne Pallier
501 102 Etienne Pallier
<pre>
502 1 Etienne Pallier
$ ./manage.py startapp pyrosapp
503 1 Etienne Pallier
</pre>
504 1 Etienne Pallier
505 103 Etienne Pallier
We obtain this structure:
506 103 Etienne Pallier
507 104 Etienne Pallier
<pre>
508 103 Etienne Pallier
509 103 Etienne Pallier
PYROS/
510 103 Etienne Pallier
├── private
511 103 Etienne Pallier
│   └── REQUIREMENTS.txt
512 103 Etienne Pallier
├── public
513 103 Etienne Pallier
│   └── static
514 103 Etienne Pallier
├── src
515 103 Etienne Pallier
│   ├── db.sqlite3
516 103 Etienne Pallier
│   ├── manage.py
517 103 Etienne Pallier
│   ├── pyros
518 103 Etienne Pallier
│   │   ├── __init__.py
519 103 Etienne Pallier
│   │   ├── __pycache__
520 103 Etienne Pallier
│   │   ├── settings.py
521 103 Etienne Pallier
│   │   ├── urls.py
522 103 Etienne Pallier
│   │   └── wsgi.py
523 103 Etienne Pallier
│   └── pyrosapp
524 103 Etienne Pallier
│       ├── __init__.py
525 103 Etienne Pallier
│       ├── admin.py
526 103 Etienne Pallier
│       ├── apps.py
527 103 Etienne Pallier
│       ├── migrations
528 103 Etienne Pallier
│       ├── models.py
529 103 Etienne Pallier
│       ├── tests.py
530 103 Etienne Pallier
│       └── views.py
531 103 Etienne Pallier
└── venv_py35_pyros
532 103 Etienne Pallier
533 7 Etienne Pallier
</pre>
534 1 Etienne Pallier
535 7 Etienne Pallier
---
536 7 Etienne Pallier
537 3 Etienne Pallier
h3. Replace the default pyrosapp models.py with the inspectdb generated one
538 3 Etienne Pallier
539 105 Etienne Pallier
From src/ :
540 1 Etienne Pallier
541 105 Etienne Pallier
<pre>
542 105 Etienne Pallier
$ mv models.py pyrosapp/
543 105 Etienne Pallier
</pre>
544 3 Etienne Pallier
545 7 Etienne Pallier
546 1 Etienne Pallier
547 9 Etienne Pallier
548 47 Etienne Pallier
---
549 3 Etienne Pallier
550 3 Etienne Pallier
h3. *TODO: Fix and improve the inspectdb generated file models.py*
551 3 Etienne Pallier
552 106 Etienne Pallier
From src/pyrosapp/
553 1 Etienne Pallier
554 106 Etienne Pallier
Edit models.py
555 106 Etienne Pallier
556 106 Etienne Pallier
Do these changes:
557 106 Etienne Pallier
...
558 109 Etienne Pallier
559 109 Etienne Pallier
560 109 Etienne Pallier
561 109 Etienne Pallier
---
562 109 Etienne Pallier
563 109 Etienne Pallier
h2. %{margin-left:0px; font-weight:bold; font-size:25px;  display:block; color:red;}II - Configuration of the Back Office (administration interface)%